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

目录

设计内容

设计目的

设计原理

实现代码

流程图

数据说明

选择算法与实验参数

初始化数组

先来先服务算法FCFS

最短寻道时间优先算法SSTF

扫描算法SCAN

循环扫描算法C-SCAN

实现结果

实现总结


设计内容

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

①先来先服务算法(FCFS)

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

③扫描算法(SCAN)  

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

设计目的

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

设计原理

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

①先来先服务算法FCFS

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

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

磁盘调度算法的实现与分析_第1张图片

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

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

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

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

磁盘调度算法的实现与分析_第2张图片

③扫描算法SCAN

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

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

磁盘调度算法的实现与分析_第3张图片

④循环扫描算法C-SCAN

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

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

磁盘调度算法的实现与分析_第4张图片

实现代码

流程图

磁盘调度算法的实现与分析_第5张图片

数据说明

磁盘调度算法的实现与分析_第6张图片

选择算法与实验参数

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

磁盘调度算法的实现与分析_第7张图片

初始化数组

磁盘调度算法的实现与分析_第8张图片

先来先服务算法FCFS

磁盘调度算法的实现与分析_第9张图片

最短寻道时间优先算法SSTF

磁盘调度算法的实现与分析_第10张图片

扫描算法SCAN

磁盘调度算法的实现与分析_第11张图片

循环扫描算法C-SCAN

磁盘调度算法的实现与分析_第12张图片

实现结果

①数据分布较为分散时:

磁盘调度算法的实现与分析_第13张图片

②数据分布较为密集时:

磁盘调度算法的实现与分析_第14张图片

实现总结

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

算法

平均移动磁道数

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

你可能感兴趣的:(算法,c++)