磁盘的结构与参数
这里讲的主要是网上所谓的老式磁盘,它是由一个个盘片组成的,我们先从个盘片结构讲起。如图1所示,图中的一圈圈灰色同心圆为一条条磁道,从圆心向外画直线,可以将磁道划分为若干个弧段,每个磁道上一个弧段被称之为一个扇区(图践绿色部分)。扇区是磁盘的最小组成单元,通常是512字节。
图1 老式磁盘一个盘片的结构
图2 老式磁盘的整体结构
图2展示了由一个个盘片组成的磁盘立体结构,一个盘片上下两面都是可读写的,图中蓝色部分叫柱面(cylinder)。
磁盘的常见参数如下:
磁头(head)、磁道(track)、柱面(cylinder)、扇区(sector)、圆盘(platter)
存储容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数
图2中磁盘容量 = 6*7*12*512KB = 258 048KB = 252M
下面讲一下现代磁盘,在老式磁盘中,尽管磁道周长不同,但每个磁道上的扇区数是相等的,越往圆心扇区弧段越短,但其存储密度越高。不过这种方式显然比较浪费空间,因此现代磁盘则改为等密度结构,这意味着外围磁道上的扇区数量要大于内圈的磁道,寻址方式也改为以扇区为单位的线性寻址。为了兼容老式的3D寻址方式,现代磁盘控制器中都有一个地址翻译器将 3D 寻址参数翻译为线性参数。
图3 一张Linux的分区表
如图3所示,在Linux中是以柱面为单位来分区的。这里分区大小除以Blocks数的值约1024说明,在磁盘上读写时的最小单位是1024字节----这是我猜的。
存取时间 = 寻道时间 + 等待时间 (平均定位时间+转动延迟)
寻道时间是指磁头移动到轨道所需的时间,等待时间为等待读写的扇区转到磁头下方所用的时间
栗子1
解析:为了助于理解,画图如下
该磁盘分为11个扇区,因旋转周期33ms,即经过每一个扇区耗时3ms,从R0开始,到R0结束,需要3秒,读取完毕后,放入单缓存区处理这些数据,经过3秒处理完毕,此时磁头已经处在R1结束位置,此时耗时(3ms+3ms);判断是否读取完毕,没有读取完继续,经过10个扇区,到R1开始位置,耗时30秒,开始读取至读取完毕,耗时6秒,判断是否读取完毕,没有读取完继续,一直到R11处理完毕。结束!!
总耗时为 :
(3ms+3ms)+(30ms+3ms+3ms)*10 =366ms
优化后,作图如下:
优化后,R0从开始到处理完毕,耗时6ms, 此时已到R1位置,继续读取处理R1,耗时6ms,一直到R10,
优化后耗时:
(3ms + 3ms)*11 = 66ms
参考博客 http://www.cnblogs.com/joydinghappy/articles/2511948.html