一、设计目的:
加深对请求磁盘调度管理实现原理的理解,掌握磁盘调度算法中的扫描寻道算法。
二、设计内容
通过编程实现磁盘调度中扫描寻道算法。设定开始磁道号寻道范围,依据起始扫描磁道号和最大磁道号数,随机产生要进行寻道的磁道号序列。选择磁盘调度算法,显示该算法的磁道访问顺序,计算出移动的磁道总数和平均寻道总数。
扫描算法SCAN:该算法不仅考虑到欲访问的磁道与当前磁道间的距离,更优先考虑的是磁头当前的移动方向。例如,当磁头正在自里向外移动时,SCAN算法所考虑的下一个访问对象,应是其欲访问的磁道既在当前磁道之外,又是距离最近的。这样自里向外地访问,直至再无更外的磁道需要访问时,才将磁臂换向为自外向里移动。
三、程序结构:
首先,用srand()和rand()函数分别进行初始化、随机数定义和产生互不相同的磁道号序列;接着,对所有磁道序列降序排序;
然后,找到访问的第一个磁道,必一一访问所有的磁道;
最后,显示该算法的磁道访问顺序,计算出移动的磁道总数和平均寻道总数。
源程序:
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 51
struct TCB //track control block
{
int tn; //track number磁道号
int flag; //完成标志 flag=-1没完成 flag=