本节讨论磁盘驱动的调度策略
几乎所有计算机都使用磁盘来存储信息
从存储角度看,与内存相比,磁盘有三个主要的优点
可用的磁盘容量非常大
每位的价格非常低
电源关掉后信息不会丢失
磁盘的结构决定了对磁盘的访问需要通过移动磁头所在的磁臂,驱动磁盘旋转以及选择适当磁头来确定数据存放在磁盘面上的空间位置
如何快速找到上述位置便是磁盘驱动调度要做的工作
一、信息传输时间
执行一次输入输出所花的时间如下:
1)寻找时间---磁头在移动臂带动下移动到指定柱面所花的时间
2)延迟时间---指定扇区旋转到磁头下所需的时间
3)传送时间---由磁头进行读写完成信息传送的时间
传送信息所花的时间,是在硬件设计就固定的
寻找时间和延迟时间是与信息在磁盘上的位置有关
各磁盘的编号按柱面顺序(从0号柱面开始),每个柱面按磁道顺序,每个磁道又按扇区顺序进行排序
假定用t表示每个柱面上的磁道数,用s表示每个盘面上的扇区数,则第i柱面,j磁头,k扇区所对应的块b由如下公式确定:b=k+s×(j+i×t)
二、移臂调度及调度算法
磁盘时一种高速旋转的存储设备。移动磁臂上的磁头在沿着直径盘片的直径方向移动,同时对指定的磁道上的扇面中的数据进行读写操作
一系列访问的续写请求来临时,如何决定各等待访问的各执行次序,使寻找和延迟时间都尽可能小的那个访问者可以优先得到服务,并降低若干个访问者的总访问时间,增加磁盘单位时间内的操作次数
根据访问者指定的柱面位置来决定执行次序的调度,称为“移臂调度“
移臂调度目的是尽可能的减少操作中的寻找时间
常用的移臂调度算法有先来先服务算法、最短寻找时间优先算法、电梯调度算法和单项扫描算法
1、先来先服务法
最简单的移动调度算法是”先来先服务“调度算法,这个算法实际上不考虑访问者要求访问的物理位置,而只是考虑访问者提出访问请求的先后次序
采用先来先服务算法决定等待访问者执行输入输出操作的次序时,移动臂来回的移动。先来先服务算法花费的寻找时间较长,所以执行输入输出操作的总时间也很长
2、最短寻找时间优先调度算法
最短寻找时间优先调度算法总是从等待访问者执行操作的次序时,读写磁头总共移动了200多个柱面的距离,与先来先服务算法比较,大幅度的减少了寻找时间,因而缩短了为各访问者请求服务的平均时间,也就提高了系统效率
3、电梯调度算法
乘电梯,如果电梯已经向上运动到4层时,依次有3位乘客陈生、伍生、张生在等候乘坐电梯
他们的要求是:陈生在2层等待去10层;伍生在5层等待去底层,张生在8层等待15层。由于电梯目前运行方向是向上,所以电梯的行程是先把乘客张生从8楼带到15层,然后电梯换成下行方向,把乘客伍生从5层带到底层,电梯最后再调换方向,把乘客陈生从2层送到10层
前述的同一例子来讨论采用”电梯调度“算法的情况,由于磁臂的初始方向有两个,而该算法是与磁臂的方向有关,所以分成两种情况来讨论:
(1)磁臂由里向外移动
(2)磁臂由外向里移动
4、单向扫描调度算法
单向扫描调度算法的基本思想是,不考虑访问者等待的先后次序,总是从0号柱面开始向里道扫描,按照各自所要访问的柱面位置的次序去选择访问者。在移动臂到达最后一个柱面后,立即快速返回到0号柱面,返回时不为任何的访问者等待服务。在返回到0号柱面后,再次进行扫描
5.调度算法比较
除了”先来先服务“调度算法外,其余三种调度算法都是根据欲访问的柱面位置来进行调度的,在调度过程中可能又新的请求访问者加入,新的请求访问者加入时如果读写已经超过了它们所要访问的柱面位置则只能在以后的调度中被选择执行
在多道程序设计系统中,在等待访问磁盘的多个访问者请求中,可能要求访问的柱面号相同但在不同磁道或在不同扇区,因此在进行移臂调度时,在按照某种算法把磁臂定位到某个柱面后,应该在等待访问这个柱面的各个访问者的输入输出操作都完成之后再改变磁臂的位置
在移动臂定位后有若干个访问者等待访问该柱面的情况下,若从减少输入输出总时间为目标出发,显然应该优先选择延迟时间最短的访问者去执行。根据延迟时间来决定执行次序的调度称为”旋转调度“
进行旋转调度时应分析下列情况
1)若干访问等待者请求访问同一磁道上的不同扇区
2)若干访问等待者请求访问不同磁道不同编号上的扇区
3)若干访问等待着请求访问不同刺刀上的具有相同编号的扇区
对于前两种情况,旋转调度总是为首先到达读写磁头位置下的扇区进行读写操作
对于第三种情况,由于这些扇区编号相同,又在同一个柱面上,所以它们同时到达读写磁头的位置下。这时旋转调度可任意选择一个读写磁头进行读写操作
四、信息的优化分布