操作系统实验六磁盘调度算法正确C代码
文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]
《操作系统》实验报告
【实验题目】:磁盘调度算法 【实验目的】
通过这次实验,加深对磁盘调度算法的理解,进一步掌握先来先服务FCFS,最短寻道时间优先SSTF,SCAN和循环SCAN算法的实现方法。 【实验内容】 问题描述:
设计程序模拟先来先服务FCFS,最短寻道时间优先SSTF,SCAN和循环SCAN算法的工作过程。假设有n个磁道号所组成的磁道访问序列,给定开始磁道号m和磁头移动的方向(正向或者反向),分别利用不同的磁盘调度算法访问磁道序列,给出每一次访问的磁头移动距离,计算每种算法的平均寻道长度。
程序要求如下:
1)利用先来先服务FCFS,最短寻道时间优先SSTF,SCAN和循环SCAN算法模拟磁道访问过程。
2)模拟四种算法的磁道访问过程,给出每个磁道访问的磁头移动距离。
3)输入:磁道个数n和磁道访问序列,开始磁道号m和磁头移动方向(对SCAN和循环SCAN算法有效),算法选择1-FCFS,2-SSTF,3-SCAN,4-循环SCAN。
4)输出:每种算法的平均寻道长度。 实验要求:
1) 上机前认真复习磁盘调度算法,熟悉FCFS,SSTF,SCAN和循环SCAN算法的过程;
2) 上机时独立编程、调试程序;
3) 根据具体实验要求,完成好实验报告(包括实验的目的、内容、要求、源程序、实例运行结果截图)。 实验代码:
#include
using namespace std;
const int MaxNumber=100; int TrackOrder[MaxNumber];
int MoveDistance[MaxNumber];//移动距离 int FindOrder[MaxNumber];//寻好序列 double AverageDistance;//平均寻道长度
bool direction;//方向 true时为向外,false为向里 int BeginNum;//开始磁道号 int M=500;//磁道数
int N;//提出磁盘I/O申请的进程数 int SortOrder[MaxNumber];//排序后的序列 bool Finished[MaxNumber]; void Inith() {
cout<<\请输入提出磁盘I/O申请的进程数: \cin>>N;
cout<<\请依次输入要访问的磁道号: \for(int i=0;i } MoveDistance[j]=0; cout<<\请输入开始磁道号: \ cin>>BeginNum; for(int k=0;k //=====================排序函数,将各进程申请的磁道按从小到大排列================= void Sort() { int temp; for(int i=N-1;i>=0;i--) for(int j=0;jSortOrder[j+1]) { temp=SortOrder[j]; SortOrder[j]=SortOrder[j+1]; SortOrder[j+1]=temp; } } } //============FCFS,先来先服务================================= void FCFS() { int temp; temp=BeginNum; for(int i=0;i //========SSTF,最短寻道法============================= void SSTF() { int temp,n; int A=M; } temp=BeginNum; for(int i=0;i //=====================SCAN,扫描算法========================== void SCAN() { int m,n,temp; temp=BeginNum; Sort(); cout<<\请选择开始方向:1--向外;0---向里: \cin>>m; if(m==1) direction=true; else if(m==0) direction=false; else cout<<\输入错误!\ for(int i=0;i
操作系统实验六磁盘调度算法正确C代码
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)
![](/skin/haowen/images/icon_star.png)