磁盘读取

转自:http://www.51testing.com/?uid-183504-action-viewspace-itemid-116788

数据存储在磁盘上的排列方式会影响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
假定磁盘的旋转速度为20MS/周,磁头当前处在R1的开始处。若系统顺序处理这些记录,使用单缓冲区,每个记录处理时间为4MS,则处理这10个记录的最长时间为_(15)_;若对信息进行优化分布后,处理这10个记录的最少时间为_(16)_。
(15)A.180ms    B.200 ms  C.204ms    D.220ms
(16)A.40ms     B. 60ms   C. 100ms   D.160ms

分析:
首先我们来回忆一下读磁盘数据的基础知识:首先磁头要移动到要访问的磁道(这个时间是寻道时间 seek time, 在本题中不需要考虑),然后等待要访问的物理块转动到磁头下面(这个时间是潜伏时间 latency time),最后是读物理块,读物理块的时间是该物理块从磁头下经过的时间。对于大容量硬盘来说,读取一小块数据的时间,相对寻道时间和潜伏时间是非常少的,以至于经常被忽略的。但是这里不能忽略,它需要20/10=2ms的时间。


现在我们来分析这道题。首先请大家注意10个物理块是从1到10依次排列的(可能有很多朋友在考虑第15题的时候忽视了这点),磁头就在R1的开始之处。 毫无疑问,必须先用2ms的时间来读出R1(读完后磁头处于R2的开始处),然后处理R1花费4ms。同时缓冲区只有一个,在R1被处理完之前,不能读入其他物理块(虽然在R1处理的过程中,磁头经过了R2物理块,可是无法读入)。但是在R1被处理完时,经过4ms的旋转磁头已经处于R4的开始处,于是不得不要有8*2=16ms的潜伏时间,才能使磁头到达R2的开始处,同样读出R2需要2ms,处理需要4ms,这样在R2上花费的时间是16+2+4=22ms,同理R3-R10也是22ms ,而R1是2+4=6ms , 所以一共需要的时间是 6+9*22=204ms.对应的选项是C  
经过上述的分析,第16题就不难得到答案了,如果将R2安排到原R4的位置,R3安排到原R7的位置,依次类推(此时物理块的排列为 R1 R8 R5 R2 R9 R6 R3 R10 R7 R4),这样访问R2-R9的潜伏时间都为0,此时处理10个物理块的时间最少,为6*10=60 , 对应选项 B.

你可能感兴趣的:(磁盘读取)