赞
踩
磁盘容量 = 柱面数 * 每个柱面的磁道数 * 每个磁道的扇区数 * 扇区大小
【如何理解柱面上的磁道?】如上图,该硬盘是由 3 个盘片组成,那么它就有 6 个可用的盘面和 6 个磁头(每个盘都有上下两面),而每一个盘面上都被逻辑划分为多个磁道,处在 0~5 号盘面上磁道号相同的磁道合起来就被称为一个柱面,在这里的话 0 柱面就是由 6 个盘面上的总共 6 个 0 磁道组成,但是实际使用时却不能分辨 0 磁道在哪个盘面上。为了确切指出具体的逻辑位置,需要指出该磁道在哪个盘面上。由于一个盘面对应一个磁头,因此也可以使用第几号磁头来表示磁道在哪个盘面上。
总结:当提到磁盘的一个柱面上有 6 个磁道时,就是在说该磁盘有 6 个盘面。
【例 1】假定有一个磁盘组共有 100 个柱面,每个柱面上有 8 个磁道,每个盘面被划分成 8 个扇区。现有一个含 5000 个逻辑记录的文件,逻辑记录的大小与扇区一致,该文件以顺序结构的形式被存放到磁盘上。柱面、磁道、扇区的编号从 0 开始,逻辑记录的编号从 0 开始。文件信息从 0 柱面、0 磁道、0 扇区开始存放。试问,该文件编号为 3468 的逻辑记录应存放在哪个柱面的第几个磁道的第几个扇区上?
【解】题中给出每个柱面上有 8 个磁道,即:该磁盘有 8 个盘面,每个盘面有 100 个磁道,每个磁道有 8 个扇区。
现在说明数据是如何被存储在磁盘里的。因为磁头是固定在一起的,所以在存放数据时,先存满一个扇区。待 8 个扇区都存满了,意味着已存满某一盘面上的一个磁道,需要往其他盘面上的同编号磁道存放。待 8 个盘面上的所有同编号磁道存满了,也就意味着该柱面已经存满了数据。这也说明,应尽量把文件记录在同一个柱面上,这样磁头就不需要重新寻找其他磁道。
注意,本题的地址编号方式与通常习惯不同,“柱面上的第几个磁道”实际所指第几个盘面。一个柱面大小为 8 * 8 = 64 个扇区,那么有 3468 / 64 = 54…12,说明柱面号为 54(或磁道号为 54),剩余 12 个扇区。因为一个盘面有 8 个扇区,所以 12 / 8 = 1…4,说明磁道号为 1(通常习惯是写成盘面号或磁头号为 1),扇区号为 4。
【例 2】某计算机系统中的磁盘有 300 个柱面,每个柱面有 10 个磁道,每个磁道有 200 个扇区,扇区大小为 512B,则:
(1)磁盘容量为多少?
(2)若文件系统的每簇包含 2 个扇区,则簇号 100530 的磁盘物理地址是多少?
【解】(1)题中给出每个柱面上有 10 个磁道,即:该磁盘有 10 个盘面,每个盘面有 300 个磁道,每个磁道有 200 个扇区,扇区大小为 512B,则
磁盘容量 = 300 * 10 * 200 * 512 / 1024 = 3 * 105 KB
。(2)与例 1 的思路类似,一个柱面大小为 10 * 200 / 2 = 1000 簇,那么有 100530 / 1000 = 100…530,说明柱面号为 100(或磁道号为 100),剩余 530 个簇。因为一个盘面有 200 / 2 = 100 个簇,所以 530 / 100 = 5…30,说明盘面号为 5,簇号为 30,转化成扇区号为 60。
【例 3】某文件系统的簇和磁盘扇区大小分别为 1KB 和 512B。若一个文件的大小为 1026B,则系统分配给该文件的磁盘空间大小是( )
A. 1026B
B. 1536B
C. 1538B
D. 2048B
【解】簇是操作系统与磁盘打交道的最小单位,文件所占用的空间必须是簇(本题为 1024B)的整数倍(若文件大小小于一簇,那么也要占一簇的空间)。因此一个大小为 1026B 的文件占用两个簇,即 2048B,选 D。
RAID:独立冗余磁盘阵列
RAID 分级 | 解释 |
---|---|
RAID0 | 无冗余、无校验的磁盘阵列(连续多个数据块交替存放,并行读写,但没有容错能力) |
RAID1 | 镜像磁盘阵列(两个磁盘同时读写,互为备份) |
RAID2 | 采用海明码的磁盘阵列 |
RAID3 | 位交叉奇偶校验的磁盘阵列 |
RAID4 | 块交叉奇偶校验的磁盘阵列 |
RAID5 | 无独立校验的奇偶校验的磁盘阵列 |
性能参数 | 描述 | 公式 | 备注 |
---|---|---|---|
寻道时间(寻找磁道的时间) | 在读/写数据前,将磁头移动到指定磁道所花的时间 | T = p + m*n | 启动磁头臂的时间为 p,磁头每跨越一个磁道耗时为 m,总共需要跨越 n 条磁道 |
延迟时间(寻找扇区的时间) | 磁头定位(寻找)到目标扇区所需要的时间 | T = (1/2)*(1/r) = 1/(2r) | 磁盘转速为 r(单位:转/分),则旋转一圈的时间为 60s/r(单位:秒)。因为在定位过程中,最多旋转 1 圈,最少不用旋转(0 圈),所以在平均情况下,需要旋转半圈,时间需除于 2 |
(读取数据所用的)传输时间 | 从磁盘读出或向磁盘写入数据所经历的时间 | T = (b/N) / r = b/(rN) | 磁盘转速为 r(单位:转/分),此次读/写的字节数为 b,每个磁道上的字节数为 N,因此 b 字节的数据需要 b/N 个磁道才能存储,而读/写一个磁道所需的时间刚好是转一圈所需时间 60s/r(单位:秒) |
(访问一个扇区的)传输时间 | 磁头扫过一个扇区所用的时间 | 传输时间 = (旋转一圈的时间 / 一条磁道的扇区总数) = (一个扇区的容量大小 / 数据传输率) | 对于磁盘的传输速率,K、M、G、T 一般是以 10 为底的单位,而不是以 2 为底!1K = 103,1M = 106,1G = 109,1T = 1012 。比如 20MB/s = 20 * 106 B/s ≠ 20 * 220 B/s |
【注 1】总的平均存取时间 = 寻道时间 + 延迟时间 + 传输时间 = 寻道时间 + 转半圈寻找扇区的时间 + 读取时间。
【注 2】注意转速的单位:我们通常用 r 转/秒 或 r 转/分,但有些题目会告诉你 r 秒/转 或 r 分/转,需要小心。
【注 3】延迟时间和传输时间都与磁盘转速相关,且为线性相关。而转速是硬件的固有属性,因此操作系统也无法优化延迟时间和传输时间。不过在硬件层面上可以优化。
(1)减少延迟时间
盘面状况 | 方法 | 描述 |
---|---|---|
一个盘面 | 交替编号 | 让编号相邻的扇区在物理上不相邻 |
多个盘面 | 错位命名 | 让相邻盘面的扇区编号错位 |
(2)采用磁盘高速缓存:在内存中为磁盘设置一个缓冲区,在缓冲区中保存了某些盘块的副本,类似于 Cache。
(3)提前读:若采用顺序访问方式对文件进行访问,则可以预知下一次要读写的盘块,此时可以先采取预先读的方式。
(4)延迟写:缓冲区中的数据原本须立即写回磁盘,但考虑到之后可能会有进程再次访问数据,因此不立刻将缓冲区的数据写回磁盘。
(5)优化物理块的分布:若将文件存储在同一个磁道中,则磁头不需要有多余的移动,大大节省了访问时间。
(6)虚拟盘:利用内存去模拟磁盘,称为虚拟盘或 RAM 盘。
(7)使用磁盘冗余阵列(RAID):由于采用了并行交叉存取的方式,可使磁盘的 I/O 速度提高。
【例 1】设磁盘转速为 7200 转/分,平均寻道时间为 9ms,每条磁道的平均扇区数为 400,则访问一个扇区的平均存取时间是多少?
- 旋转一圈的时间 = (60s / 7200) * 1000 = 8ms,旋转延迟时间 = 1/2 * 旋转一圈所用时间 = 4ms
- 传输时间 = 8ms / 400 = 0.02ms
- 寻道时间 = 9ms
- 平均存取时间 = 寻道时间 + 旋转延迟时间 + 传输时间 = 9ms + 4ms + 0.02ms = 13.02ms
【例 2】设磁盘的转速为 10000 转/分,平均寻道时间为 6ms,磁盘传输速率为 20MB/s,磁盘控制器延迟为 0.2ms,读取一个 4KB 扇区所需的平均时间是多少?
- 旋转一圈的时间 = (60s / 10000) * 1000 = 6ms,旋转延迟时间 = 1/2 * 旋转一圈所用时间 = 3ms
- 传输时间 = 读取时间 + 延迟时间 = (4KB) / (20MB/s) * 1000 + 0.2 = 0.2ms + 0.2ms = 0.4ms
- 寻道时间 = 6ms
- 平均存取时间 = 寻道时间 + 旋转延迟时间 + 传输时间 = 6ms + 3ms + 0.4ms = 9.4ms
【例 3】已知某磁盘的平均转速是 r 秒/转,平均寻找时间是 T 秒,每个磁道可以存储的字节数是 N,现在向该磁盘写入 b 字节的数据,采用随机寻道的方法,每道的所有扇区组成一个簇,其平均访问时间是?
- 注意“r 秒/转”即为旋转一圈的时间
- 磁道数 = 数据总量/每个磁道存储容量 = b/N
- 读写一个磁道所需时间 = 寻道时间 + 读写磁道时间 = T + r
- 注意一个磁道就作为一个簇,不用涉及定位扇区的时间(延迟时间)
- 访问一个簇平均访问时间 = 读写一个磁道所需时间 * 磁道数 = (T+r) * (b/N)
【例 4】(盘面未采用交替编号)假设磁盘的每个磁道划分为 9 个块,现在一个文件有 A, B,…, I 共 9 条记录,每条记录的大小与块的大小相等,设磁盘转速为 27ms/转,每读出一块后需要 2ms 的处理时间。若忽略其他辅助时间,且一开始磁头在即将要读 A 记录的位置,试问:若顺序存放这些记录顺序读取,处理该文件要多少时间?
【解】磁盘转速为 27ms/转,则读取每个扇区所需时间为 3ms。
读取第一个记录 A,需要花费 3ms,然后还需要 2ms 的处理时间。但记录 A 处理完成后,磁头位于记录 B 扇区的 2/3 位置,并不在记录 B 的开头。为了完整读取记录 B,必须再转接近一圈重新抵达记录 B 的开头,需要花费的时间为 27ms - 2ms = 25ms。
等到记录 B 读取并处理完成后,又是上面类似的过程,于是总结如下:
过程 | 时间 |
---|---|
读取并处理 A | 5ms |
转到 B | 25ms |
读取并处理 B | 5ms |
转到 C | 25ms |
读取并处理 C | 5ms |
转到 D | 25ms |
读取并处理 D | 5ms |
转到 E | 25ms |
读取并处理 E | 5ms |
转到 F | 25ms |
读取并处理 F | 5ms |
转到 G | 25ms |
读取并处理 G | 5ms |
转到 H | 25ms |
读取并处理 H | 5ms |
转到 I | 25ms |
读取并处理 I | 5ms |
所以一共花费的时间为 8 * 25ms + 9 * 5ms = 245ms。
【例 5】(盘面采用交替编号)一个交叉存放信息的磁盘,信息存放方式如下图所示。每个磁道有 8 个扇区,每个扇区 512B,旋转速度为 3000 转/分。假定磁头已在读取信息的磁道上,0 扇区转到磁头下需要 1/2 转,且设备对应的控制器不能同时进行输入/输出,在数据从控制器传送全内存的这段时间内,从磁头下通过的扇区数为 2。请回答:
(1)依次读取一个磁道上的所有扇区需要多少时间?
(2)该磁盘的数据传输率是多少?
【解】(1)旋转速度为 3000 转/分,即 20ms/转,每个扇区的读取时间为 20/8 = 2.5ms。
过程如下表所示:
过程 | 时间 |
---|---|
0 扇区转到磁头下 | 10ms |
读取 0 扇区 | 2.5ms |
转到 1 扇区(此时正在传输 0 扇区数据) | 5.0ms |
读取 1 扇区 | 2.5ms |
转到 2 扇区(此时正在传输 1 扇区数据) | 5.0ms |
读取 2 扇区 | 2.5ms |
转到 3 扇区(此时正在传输 2 扇区数据) | 5.0ms |
读取 3 扇区 | 2.5ms |
转到 4 扇区(此时正在传输 3 扇区数据) | 5.0ms |
读取 4 扇区 | 2.5ms |
转到 5 扇区(此时正在传输 4 扇区数据) | 5.0ms |
读取 5 扇区 | 2.5ms |
转到 6 扇区(此时正在传输 5 扇区数据) | 5.0ms |
读取 6 扇区 | 2.5ms |
转到 7 扇区(此时正在传输 6 扇区数据) | 5.0ms |
读取 7 扇区 | 2.5ms |
传输 7 扇区数据 | 5.0ms |
依次读取一个磁道上的所有扇区的时间:10ms + (2.5ms + 5.0ms) * 8 = 70ms。
(2)每个磁道有 8 个扇区,每个扇区 512B,则一个磁道数据大小为 8 * 512B = 4KB。
故数据传输率为 4KB / 70ms = 58.5kB/s。
算法 | 缺点 |
---|---|
先来先服务算法(FCFS) | ~ |
最短寻找时间优先算法(SSTF) | 可能导致饥饿 |
扫描算法(SCAN,电梯算法) | 对于各个位置磁道的响应频率不平均 |
循环扫描算法(C-SCAN) | ~ |
假设在一个磁盘上,有 1000 个柱面,编号从 0~999,用下面的算法计算为了满足磁盘队列中的所有请求,磁盘臂必须移动过的磁道数目。假设最后服务的请求时在磁道 345 上,并且读写头正在朝磁道 0 移动。在按 FIFO 顺序排列的队列中包含了如下磁道上的请求:123,874,692,475,105,376。
磁头 | 磁道访问的顺序 |
---|---|
磁头移动 | 345,123,874,692,475,105,376 |
磁头 | 磁头位置 |
---|---|
初始 | 345 |
磁头最近的磁道 | 376 |
磁头最近的磁道 | 475 |
磁头最近的磁道 | 692 |
磁头最近的磁道 | 874 |
磁头最近的磁道 | 123 |
磁头最近的磁道 | 105 |
磁头 | 磁道访问的顺序 |
---|---|
磁头朝磁道 0 移动 | 345,123,105,0 |
磁头朝磁道 999 移动 | 0,376,475,692,874 |
磁头 | 磁道访问的顺序 |
---|---|
磁头朝磁道 0 移动 | 345,123,105 |
没有更小的磁道号,磁头朝磁道 999 移动 | 105,376,475,692,874 |
磁头 | 磁道访问的顺序 |
---|---|
磁头朝磁道 0 移动 | 345,123,105,0 |
磁头回滚至 999,朝磁道 0 移动 | 0,999,874,692,475,376 |
磁头 | 磁道访问的顺序 |
---|---|
磁头朝磁道 0 移动 | 345,123,105 |
没有更小的磁道号,磁头朝磁道 0 移动 | 105,874,692,475,376 |
项目 | 描述 |
---|---|
原理 | EEPROM(电可擦除 ROM) |
组成 | 多个闪存芯片,每个芯片有多个块,每个块有多个页 |
读写特性 | 以“页”为单位读写,支持随机访问(读快、写慢) |
擦除特性 | 以“块”为单位擦除,一个块如果被擦除次数过多会损坏 |
磨损均衡技术 | 动态磨损均衡(优先写入擦除次数较少的块)、静态磨损均衡(自动检测并迁移分配数据,使其寿命更长) |
优点 | 噪音小,读写速度快,抗震 |
缺点 | 造价高 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。