这个问题不难,就是绕。答案里的给的公式不好理解,画图更容易理解。
题目大意:一个磁道9个扇区,磁盘转速为27ms/r,读出一块的处理时间为2ms。问:顺序存取的话处理这9个块要多少时间。
这个问题在书里的概念也有提到过,因为磁盘在读取完文件的时候还要处理文件,但是此时磁头已经位于下一块了,所以并不能做到顺序读取无缝衔接,必须等到下一转才能读取下一块。
由题得扫过一个扇区为3ms,我们先来分析读取并处理1的情况
磁头从红线开始,经过3到达黄线,此时1号已经读取完;磁头经过2再到绿线,此时磁头已经完成对1的处理。这个时候一共经历了5ms
因为要求顺序读取,下一块必须读2,但是此时磁头不在2号的开头,所以必须要等到磁头转一圈回到2号的开头。从绿线到黄线逆时针转需要27-2=25ms。这个时候和1号的处理一样。
根据这个规律递推,有5+25+5+25…………
注意,最后在读9号的时候没有后面的25了,因为已经不用再继续了。
所以应该是5*9+25*8=245ms
那怎么才能做到更高效率的顺序存取呢?答案很显然,就是隔一块放一号。
依旧是从红线开始,我们可以发现,读完1号块后处理完磁头在6号块的范围内,此时磁头继续转动,就可以接着访问2号块。
当磁头从红线开始,转了一圈转到黄线的时候,已经处理完成了1,2,3,4,5块,经历了27+2=29ms(因为最后的5号块还要2ms处理时间)
这个时候要处理剩下的6,7,8,9块,从图中可以看出,磁头转到绿线处即可处理完成。从黄线到绿线需要1+2+3*7=24ms。
所以一共需要29+24=53ms。
答案的做法很简洁,但是不好理解,起码对于我来说,我一下是看不懂的......我觉得这样模拟的方法能对这个机制更好的理解,虽然是笨办法但是有用。