一、设计目的:
加深对请求磁盘调度管理实现原理的理解,掌握磁盘调度算法中的最短寻道优先算法。
二、设计内容通过编程实现磁盘调度中最短寻道优先算法。
设定开始磁道号寻道范围,依据起始扫描磁道号和最大磁道号数,随机产生要进行寻道的磁道号序列。选择磁盘调度算法,显示该算法的磁道访问顺序,计算出移动的磁道总数和平均寻道总数。
最短寻道优先算法SSTF:该算法选择这样的进程:其要求访问的磁道与当前磁头所在的磁道距离最近,以使每次的寻道时间最短。
三、程序结构:首先,用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=1完成
}track[N];
int a[N]; //记录磁道访问的先后顺序
int randomnumber(int n,int max,int min) //各磁道互不相同
{
srand((int)time(NULL))