硬盘数据访问时间计算分为三个部分:
寻道时间:也称寻找时间:磁头移动到*磁道需要的时间
延迟时间:磁头定位到某一磁道的扇区所需要的时间
传输时间:从磁盘读出或者写入经历的时间
寻找磁道的时间是较大的影响因子,因此各种调度算法目的都是为了优化寻道的时间。
一旦找磁道的问题得到了解决,那么在道上寻找扇区也不会那么难了。较多是转一圈就可以找到,较少是进到道上就是需要的扇区。因此平均是转半圈的时间。
而读取磁道上的数据耗时计算,我们通常是简化了的,即读一个磁道的数据耗时就是转动一圈的时间。
实际上,为了达到这个效果,需要的策略是扇区的交错编号。为什么呢,因为读完一个扇区,就需要一点时间休息调整一下。机器也要缓冲,不能连续不断工作。
连续编号是指,读取的扇区是0,1,2,3…编号时它们不相邻,隔着一段能够修整好的时间,通常隔一个扇区即可。这样读取一圈磁道需要耗时并不是转一圈的时间,而是两圈。但是我们计算时还是简化了,也不考虑背后的设计逻辑,简单考虑为,可以连续工作。
背后的设计与妥协可以思考一下,计算本身还是依据简化的模型来。
因此总的时间可以简单记为:寻道+转半圈寻找扇区+读取。
看一个例子,这里需要注意的是转速的单位。我们通常用r转/s,但是不排除有些故意挖坑,设置为r s/转。因此要留心。
已知某磁盘的平均转速是r秒/转,平均寻找时间是T秒,每个磁道可以存储的字节数是N,现在向该磁盘写入b字节的数据,采用随机寻道的方法,每道的所有扇区组成一个簇,其平均访问时间是(r+T)b/N.
寻道时间已经告知为T, 现在需要读出b字节,随机读写,则需要的磁道数是b/N。
那么寻道的总时间是:bT/N.
因为一个道就作为一个簇,不用涉及寻找扇区时间,因此读写总时间就是:rb/N.
因此总时间就是(r+T)b/N。