一、实验目的 任何一个对磁盘的访问请求,应给出访问磁盘的存储空间地址:柱面号、磁头号和扇区号。在启动磁盘执行I/O操作时,应先把移动臂移动到指定的柱面,再等待指定的扇区旋转到磁头位置下,最后让指定的磁头进行读/写,完成信息传送。移臂调度是根据访问者指定的柱面位置来决定执行次序的调度。本实验要求学生设计一个电梯调度算法来模拟实现磁盘移臂调度过程。 二、实验要求 假设要求从系统中输入N个需访问的柱面号,当前磁头的移动方向由键盘输入(1代表磁头从外往内移动,-1代表磁头由内往外移动),当前磁头刚完成访问序号为M的柱面,请编程输出采用电梯调度算法得到的柱面访问序列号,同时输出读/写磁头总共移动的距离(用柱面数表示)
时间: 2024-03-30 21:38:42 浏览: 77
好的,下面是电梯调度算法的介绍:
电梯调度算法是一种基于电梯运动原理的磁盘调度算法。它的基本思想是,磁盘的移臂类似于电梯的上下运动,在同一方向上尽可能多地服务请求,直到该方向没有请求为止,再改变运动方向,继续服务请求。因此,它也被称为 SCAN(扫描)算法。
具体实现时,我们可以将磁盘的柱面看作电梯的楼层,将磁头的移动看作电梯的上下运动。假设当前磁头的位置为M柱面,要访问的柱面序列为{C1, C2, ..., CN},当前磁头的移动方向为D(1代表磁头从外往内移动,-1代表磁头由内往外移动),则电梯调度算法的过程如下:
1. 将要访问的柱面序列按照与当前位置的距离从近到远排序,得到排序后的柱面序列{Ci1, Ci2, ..., CiN}。
2. 如果当前方向D为1,从排序后的柱面序列中选择第一个大于等于M的柱面Ci,并访问它,然后访问Ci1, Ci2, ..., CiN中所有大于等于Ci的柱面,最后改变运动方向,从大于Ci的柱面中选择最小的柱面Cj,并访问它,然后访问Cj-1, Cj-2, ..., C1中所有小于等于Cj的柱面。
3. 如果当前方向D为-1,从排序后的柱面序列中选择第一个小于等于M的柱面Ci,并访问它,然后访问Ci1, Ci2, ..., CiN中所有小于等于Ci的柱面,最后改变运动方向,从小于Ci的柱面中选择最大的柱面Cj,并访问它,然后访问Cj+1, Cj+2, ..., CN中所有大于等于Cj的柱面。
4. 重复步骤2和步骤3,直到所有的柱面都被访问完毕。
在电梯调度算法中,磁头的移动距离取决于访问柱面的顺序。因此,我们可以在算法执行过程中统计磁头移动的距离,作为算法效率的评价指标之一。
根据上述算法,你可以编写一个程序来实现电梯调度算法,并输出访问柱面的序列和磁头移动距离。
阅读全文