通过完成操作系统导论37章作业来理解磁盘驱动器的寻道、旋转、传输时间的计算,磁盘的偏斜,以及磁盘调度算法。
37.1
Compute the seek, rotation, and transfer times for the following sets of requests: -a 0, -a 6, -a 30, -a 7,30,8, and finally -a 10,11,12,13.
-a 0
执行指令 python2 disk.py -a 0 -G
可以看到,指针在6处,目标是同磁道的0处。显然,寻道时间为0,然后旋转时间估计是180度乘以角速度1s/度,但是传输时间还不是很清楚,先按s运行看看:
看了动画就明白了,目标是0扇区,但是具体整扇区的位置是数字11和0中间,所以开始到扇区是165度,然后进入0扇区,从头到尾共30度,也就是传输时间。所以旋转时间165,传输时间30,加起来共195 。
-a 6
执行指令 python2 disk.py -a 6 -G
这次,目标是6,虽然开始也是6,但是已经在中间,所以应该要等下一圈才能开始,所以可以估计寻道时间是0,旋转时间是360-15=345,传输时间仍为30。按s看动画:
果然如此。
-a 30
执行指令 python2 disk.py -a 30 -G
这次目标是30,不在一个磁道了。寻道速度也是1,但距离我还不知道。所以寻道之后,到了内磁道,已经转到哪一个扇区也不知道。所以还是看动画吧:
好了,动画就很清楚了,跨一个磁道的寻道时间是40,所以大概也就是旋转了一个快多一点。这次是跨两个磁道,寻道时间80。到内磁道后