硬盘详解
硬盘详解
概述
在磁盘的使用过程中,扇区,磁道(或柱面)和磁头数构成了硬盘结构的基本参数,下面了解下基本的硬盘知识。
附上手绘图,建立基本概念
硬盘最基本的组成部分是由坚硬金属材料制成的涂以磁性介质的盘片,不同容量硬盘的盘片数不等。每个盘片有两面,都可记录信息。
如图为一个磁盘内的概念图,逐个解释:
扇区:盘片被分成许多扇形的区域,每个区域叫一个扇区,每个扇区可存储128×2的N次方(N=0,1,2,3)字节信息。
磁道:盘片表面上以盘片中心为圆心,不同半径的同心圆称为磁道。
柱面:不同盘片相同半径的磁道所组成的圆柱称为柱面(磁道与柱面都是表示不同半径的圆,在许多场合, 磁道和柱面可以互换使用)
磁头:每个磁盘有两个面,每个面都有一个磁头,习惯用磁头号来区分。
要点:
- 硬盘有数个盘片,每盘片两个面,每个面一个磁头
- 盘片被划分为多个扇形区域即扇区
- 同一盘片不同半径的同心圆为磁道
- 不同盘片相同半径构成的圆柱面即柱面
- 存储容量=磁头数×磁道(柱面)数×每道扇区数×每扇区字节数
磁道
当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道。这些磁道用肉眼是根本看不到的,因为它们仅是盘面上以特殊方式磁化了的一些磁化区,磁盘上的信息便是沿着这样的轨道存放的。相邻磁道之间并不是紧挨着的,这是因为磁化单元相隔太近时磁性会相互产生影响,同时也为磁头的读写带来困难。一张1.44 MB的3.5英寸软盘,一面有80个磁道,而硬盘上的磁道密度则远远大于此值,通常一面有成千上万个磁道。
扇区
磁盘上的每个磁道被等分为若干个弧段,这些弧段便是磁盘的扇区,每个扇区可以存放512个字节的信息,磁盘驱动器在向磁盘读取和写入数据时,要以扇区为单位。1.44 MB的3.5英寸的软盘,每个磁道分为18个扇区。
看下扇区和磁道的关系
柱面
硬盘通常由重叠的一组盘片构成,每个盘片有可以存储数据的上、下两盘面(Side),它们从上至下从“0”开始依次编号。每个盘面都被划分为数目相等的磁道,并从外缘的“0”开始编号,具有相同编号的磁道形成一个圆柱,称之为磁盘的柱面。磁盘的柱面数与一个盘面上的磁道数是相等的。由于每个盘面都有自己的磁头,因此,盘面数等于总的磁头数。所谓硬盘的 CHS,即Cylinder(柱面)、Head(磁头)、Sector(扇区),只要知道了硬盘的 CHS 的数目,即可确定硬盘的容量,硬盘的容量 = 柱面数 * 磁头数 * 扇区数 * 512 B。
读写磁头
每个盘面上一个读写磁头,盘面号即磁头号。所有磁头在磁头臂作用下同时内外移动,即任意时刻,所有磁头所处的磁道号是相同的。每个盘片有两个面,每个面都有一个磁头,习惯用磁头号来区分。
看下真实的磁盘样子
与之相关的计算
移臂算法
在磁盘调度管理中,应先进行移臂调度,再进行旋转调度。假设磁盘移动臂位于20号柱面上,进程的请求序列如下所示。如果采用最短移臂算法,那么系统的单应序列应为()
A.②⑧③④⑤①⑦⑥⑨
B. ②③⑧④⑥⑨①⑤⑦
C. ④⑥⑨⑤⑦①②⑧③
D.④⑥⑨⑤⑦①②③⑧
解析:移臂就找柱面,旋转就找扇区,其它均按最近原则调度。
距离当前移臂位置20号最近的柱面是21号柱面,对应请求序列为④⑥,排除A、B选项。其次对应16号柱面,序列号②⑧③访问扇区3、4、6的路径最优。因此选择C
磁盘读取数据时间
例子一
假设每磁道划分成10个物理块,每块存放1个逻辑记录。逻辑记录 R!
个逻辑记录。逻辑记录R1,R2,... ,R10存放在同一个磁道上,记录的安排顺序如下表所示:
物理块 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
逻辑记录 | R1 | R2 | R3 | R4 | R5 | R6 | R7 | R8 | R9 | R10 |
假定磁盘的旋转速度为 20MS/圈
,磁头当前处在 R1 的开始处。若系统顺序处理这些记录,使用单缓冲区,每个记录处理时间为 4MS,则处理这 10 个记录的最长时间为___。若对信息存储进行优化分布后,处理 10 个记录的最少时间为___
解析:
首先从磁盘的转速:20ms/圈
,我们可以知道:读取一条记录需要 2ms
。
值得注意的一点是:处理一条记录的前提,是将其读出来。
所以处理第一条记录时,要先将其读取出来,再进行处理,所以处理 R1 所需时间为 2ms+4ms
,当 R1 处理完时,磁头已经转到了 R4 的位置。
此时要将其调整到 R2 的位置,需要经过R4,R5,R6,R7,R8,R9,R10,R1,这样要耗 16ms
的时间,再加上读取 R2 需要 2ms 以及处理数据的 4ms,R2的总处理时间应为22ms。所以 2 + 4 + (16+2+4) * 9 = 204ms
。
第二问要求计算10个记录最少时间。只要把记录间隔存放,就能达到目标。优化后的排列顺序应为:R1,R8,R5,R2,R9,R6,R3,R10,R7,R4,这样的排列顺序刚好是处理完 R1,磁头就到了 R2 的位置,直接读取 R2,处理 R2,处理完 R2,磁头又到了 R3 的位置,依此类推,每条记录的读取及处理时间为:2ms+4ms=6ms
,所以总时间为:(2+4) * 10 = 60ms
。
例子二
在磁盘上存储数据的排列方式会影响 I/O 服务的总时间。假设每磁道划分成 10 个物理块,每块存放 1 个逻辑记录。逻辑记录 R1.R2, ..., R10 存放在同一个磁道上, 记录的安排顺序如下表所示;
物理块 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
逻辑记录 | R1 | R2 | R3 | R4 | R5 | R6 | R7 | R8 | R9 | R10 |
假定磁盘的旋转速度为 30ms/周,磁头当前处在 R1 的开始处。若系统顺序处理这些记录,使用单缓冲区,每个记录处理时间为 6ms,则处理这 10 个记录的最 长时间为( );若对信息存储进行优化分布后,处理 10 个记录的最少时间为(请作答此空)。
解析:
系统读记录的时间为 30/10=3ms
。
对第一种情况:系统读出并处理记录R1之后,将转到记录 R4 的开始处,所以为了处理记录 R2,磁盘必须再转 24ms,需要3ms(读记录)加6ms(处理)的时间。
所以处理R2记录的时间为24+3+6=33ms。
这样,同理处理R3--R10的时间也是33ms,所以处理10个记录的总时间应为处理后 9个记录(即R2,R3,…,R10)
的总时间再加上读R1和处理时间 (9×33ms+3ms+6ms=306ms)
。
若对信息进行分布优化的结果对应关系所示: 物理块 1 2 3 4 5 6 7 8 9 10 逻辑记录R1 R8 R5 R2 R9 R6 R3 R10 R7 R4
从上表可以看出,当读出记录R1并处理结束后,磁头刚好转至R2记录的开始处,立即就可以读出并处理,因此处理10个记录的总时间为: 10×(3ms(读记录)+6ms(处理记录))=10×9ms=90ms
若磁盘的转速提高一倍
当磁盘的转速改变时,由于平均寻道时间与磁盘转速无关,所以它不变。磁盘的转速提高一倍,只是平均旋转延迟时间减半。