磁盘调度算法寻道问题

常用的磁盘调度算法有四种:

  • 先来先服务算法(FCFS)
  • 最短寻道时间优先算法(SSTF)
  • 扫描算法(SCAN)
  • 循环扫描算法(CSCAN)
先来先服务算法(First Come First Service)

FCFS算法根据进程请求访问磁盘的先后顺序进行调度,是一种最简单的调度算法。
例1:某一磁盘请求序列(磁道号):98、 183、 37、122、14、124、 65、 61,按照先来先服务FCFS磁盘调度对磁盘进行请求服务,假设当前磁头在53道上,则磁臂总移动道数为多少?

先来先服务,按进程请求访问磁盘的先后次序进行调度。
当前磁道:53

下一个磁道移动磁道数
9845
18385
37146
12285
14108
124110
6559
614

总移动道数=45+85+146+85+108+110+59+4=642

最短寻道时间优先磁盘调度算法(SSTF)Shortest Seek Time First

算法选择这样的进程,其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短,该算法可以得到比较好的吞吐量,但却不能保证平均寻道时间最短。其缺点是对用户的服务请求的响应机会不是均等的,因而导致响应时间的变化幅度很大。在服务请求很多的情况下,对内外边缘磁道的请求将会无限期的被延迟,有些请求的响应时间将不可预期。

例2:若干个等待访问磁盘者依次要访问的磁道为 19, 43, 40, 4, 79,11,76,当前磁头位于 40 号柱面,若用最短寻道时间优先磁盘调度算法,则访问序列为_

根据最短寻道时间优先磁盘调度算法,每次在寻找下一个磁道时,都要选择离自己最近的,所以当前磁头位于40号,下一道选择与40绝对值最小的,即40,再下一道选择43,差值为3,以此类推,最后的访问序列应该为,40,43,19,11,4,76,79.

扫描算法(SCAN)电梯调度

优先考虑磁头的当前移动方向,并且考虑当前磁道与下一磁道之间的距离。例如,当磁头正在自里向外移动时,扫描算法所选择的下一个访问对象应该是,即在当前磁道之外,又距离最近。这样自里向外的访问,直到再无更外的磁道需要访问才将磁臂换向,自外向里移动。移动原则同前一致。下面贴出这一段的来源浅谈磁盘调度算法
由于这种算法中磁头移动的规律与电梯的运行相似,因此又称为电梯调度算法。

循环扫描算法(CSCAN)

循环扫描算法是对扫描算法的改进。如果对磁道的访问请求是均匀分布的,当磁头到达磁盘的一端,并反向运动时落在磁头之后的访问请求相对较少。这是由于这些磁道刚被处理,而磁盘另一端的请求密度相当高,且这些访问请求等待的时间较长,为了解决这种情况,循环扫描算法规定磁头单向移动。例如,只自里向外移动,当磁头移到最外的被访问磁道时,磁头立即返回到最里的欲访磁道,即将最小磁道号紧接着最大磁道号构成循环,进行扫描。

前两道题目为牛客网上的练习题,之前应该是某家互联网公司网申的笔试题目,下面一道例题将用四种不同磁盘调度算法来解答。

例题

假设移动头磁盘有200个磁道(从0号到199号)。目前正在处理143号磁道上的请求,而刚刚处理结束的请求是125号,如果下面给出的顺序是按FIFO排成的等待服务队列顺序:86,147,91,177,94,150,102,175,130
那么,用下列各种磁盘调度算法来满足这些请求所需的总磁头移动量是多少?
(1) FCFS;(2) SSTF;(3) SCAN;(4) LOOK;(5) C-SCAN?

FCFS(先来先服务)
当前磁道下一磁道移动距离
1438657
8614761
1479156
9117786
1779483
9415056
15010248
10217573
17513045
总距离579
SSTF(最短寻道时间优先)

寻道顺序:当前143,147,150,130,102,94,91,86,175,177;
4+3+20+28+8+3+5+89+2=162;

SCAN(电梯调度算法)

当前方向:从143向磁道号增加的方向
依次访问:147,150,175,177
反方向:130,102,94,91,86
4+3+25+2+47+28+8+3+5=125

CSCAN

当前方向:从143向磁道号增加的方向
依次访问:147,150,175,177
再从0开始增加方向:86,91,94,102,130
此处移动总距离存在疑问

  • 13
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值