磁盘调度算法的实现与分析

设计内容

编程序实现下述磁盘调度算法,并求出每种算法的平均移动磁道数,并分析结果:

①先来先服务算法(FCFS)

②最短寻道时间优先算法(SSTF)

③扫描算法(SCAN)  

 ④循环扫描算法(C-SCAN)

设计目的

使学生熟悉磁盘管理系统的设计方法;加深对所学各种磁盘调度算法的了解及其算法的特点。

设计原理

磁盘调度在多道程序设计的计算机系统中,各个进程可能会不断提出不同的对磁盘进行读/写操作的请求。由于有时候这些进程的发送请求的速度比磁盘响应的还要快,因此我们有必要为每个磁盘设备建立一个等待队列。[1]

①先来先服务算法FCFS

算法思想:根据进程请求访问磁盘的先后顺序进行调度。

假设磁头的初始位置是30号磁道,有多个进程先后陆续地请求访问50,70,60,80,110,20号磁道。

按照先来先服务算法规则,按照请求到达的顺序,磁头需要依次移动到50,70,60,80,110,20号磁道。

②最短寻道时间优先算法SSTF

算法思想:优先处理的磁道是与当前磁头最近的磁道。可以保证每次寻道时间最短,但是不能保证总的寻道时间最短。(贪心算法)

假设磁头的初始位置是30号磁道,有多个进程先后陆续地请求访问50,70,60,80,110,20号磁道。

③扫描算法SCAN

算法思想:当设备无访问请求时,磁头不动;当有访问请求时,磁头按一个方向移动,在移动过程中对遇到的访问请求进行服务,然后判断该方向上是否还有访问请求,如果有则继续扫描;否则改变移动方向,并为经过的访问请求服务,如此反复。

假设磁头的初始位置是30号磁道,且此时磁头正在往磁道号增大的方向移动,有多个进程先后陆续的访问50,70,60,80,110,20号磁道。

④循环扫描算法C-SCAN

算法思想:在扫描算法的基础上规定磁头单向移动来提供服务,回返时直接快速移动至起始端而不服务任何请求。由于SCAN算法偏向于处理那些接近最里或最外的磁道的访问请求,所以使用改进型的C-SCAN算法来避免这个问题。

假设磁头的初始位置是30号磁道,有多个进程先后陆续的访问50,70,60,80,110,20号磁道。

实现代码

流程图

数据说明

选择算法与实验参数

在main函数中输入磁道数量与进程请求访问数量和实验次数,进入method函数。

初始化数组

先来先服务算法FCFS

最短寻道时间优先算法SSTF

扫描算法SCAN

循环扫描算法C-SCAN

实现结果

①数据分布较为分散时:

②数据分布较为密集时:

实现总结

综上实验,可以得知两组数据下四种算法的平均移动磁道数分别为:

算法

平均移动磁道数

FCFS

16449

SSTF

1030

SCAN

1946

C-SCAN

1990

表1 数据组1结果

算法

平均移动磁道数

FCFS

66469.1

SSTF

1737.08

SCAN

1842.65

C-SCAN

1989.41

表2 数据组2结果

在数据较为分散时:FCFS性能最差;SSTF明显优于SCAN;SCAN的性能与C-SCAN接近,而两者平均移动磁道数都接近两倍磁道数量。

在数据较为集中时:FCFS性能下降颇多;SSTF与SCAN、C-SCAN性能接近;而C-SCAN无论何种情况平均移动磁道数都接近两倍磁道数量。

由结果可以得知:

算法

优点

缺点

FCFS

公平、易实现

请求分散时,性能差

SSTF

性能优于FCFS

可能产生“饥饿”现象

SCAN

同时考虑距离与方向,可以避免“饥饿”现象

不利于远离磁头一端的请求访问

C-SCAN

在SCAN的基础上消除对两端磁道请求的不公平

仍然存在磁臂粘着

表3 算法比较

参考资料

[1]科普中国.磁盘调度算法.百度百科[OL].[2022-07-18].

https://baike.baidu.com/item/%E7%A3%81%E7%9B%98%E8%B0%83%E5%BA%A6%E7%AE%97%E6%B3%95/3505728?fr=aladdin

  • 5
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Leviash

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值