05操作系统实验 - 磁盘管理实验要点

2019-01-27 18:46

广州大学学生实验报告

开课学院及实验室:计算机科学与工程实验室 2015 年12 月 1日实验课程名称 实验项目名称 操作系统 成绩 指导老师 陈康民 文件管理实验 (***报告只能为文字和图片,老师评语将添加到此处,学生请勿作答***)

一、实验目的

要求模拟先来先服务法(First-Come, First-Served,FCFS),最短寻道时间优先法(Shortest Seek Time First, SSTF),电梯法(SCAN),循环扫描算法(CSCAN)四种磁盘调度算法,输入为一组请求访问磁道序列,输出为每种调度算法的磁头移动轨迹和移动的总磁道数。

二、 实验内容

编程序实现下述磁盘调度算法,并求出每种算法的平均寻道长度: 1、先来先服务算法(FCFS) 2、最短寻道时间优先算法(SSTF) 3、扫描算法(SCAN) 4、循环扫描算法(CSCAN)

三、 实验设备

带Linux操作系统的电脑一台。

四、实验过程原始数据记录

实验代码:

#include #include #include #include using namespace std; const int MaxNumber=100;

int TrackOrder[MaxNumber];//磁盘访问序列 int MoveDistance[MaxNumber];//磁头每次移动的距离 double AverageDistance;//平均寻道长度

bool direction;//SCAN和CSCAN算法的磁头移动方向 int M;//开始磁道号 int N;//磁道个数

void inputData() {

cout<<\请输入磁道个数N: \cin>>N;

cout<<\请输入磁盘访问顺序(此部分由文件读入)。\

fstream fin(\磁盘调度文件.txt\

for(int i=0;i

void showData() {

cout<<\显示配置信息

fin>>TrackOrder[i];

cout<<\请输入开始磁盘号M: \cin>>M;

=============================\\n\ }

void FCFS() {

int i,j; int sum=0; float avg;

int Fcfs[MaxNumber]; int sumArray[MaxNumber]; for(i=0;i

Fcfs[i]=TrackOrder[i];

cout<<\输入磁道个数N为:\开始磁盘号M:\cout<<\磁盘访问序列为: \for(int i=0;i

cout<

cout<

}

//sum=0;

sumArray[0]=abs(M-Fcfs[0]); //cout<<\磁盘调度算法:\cout<<\从\号磁道开始\cout<<\被访问的下一个磁道号: \for(i=0;i

cout<

cout<

cout<<\对应移动距离(磁道数): \for(i=0,j=1;j

sumArray[j]=abs(Fcfs[j]-Fcfs[i]);

cout<

for(i=0;i

sum=sum+sumArray[i];

avg=(float)sum/N;

cout<<\总寻道长度:\

cout<<\平均寻道长度:\

void SSTF() {

int i,j;

int k=1; int s=0; int temp; int l,r; int sum=0; float avg=0; int Sstf[MaxNumber]; int sumArray[MaxNumber]; int Mnow; Mnow=M;

for(i=0;i

Sstf[i]=TrackOrder[i];

//sum=0;

//sumArray[0]=abs(M-Fcfs[0]); for(i=0;i

//cout<<\磁盘调度算法:\cout<<\从\号磁道开始\cout<<\被访问的下一个磁道号: \

if(Sstf[N-1]<=Mnow)//若被访问的下一个最大的磁道号不大于当前的磁道号 { } else {

if(Sstf[0]>=Mnow) {

for(i=0,s=0;i

for(i=N-1,s=0;i>=0;i--,s++) { }

cout<

if(Sstf[i]>Sstf[j])//将磁道号从小到大排序 }

{ }

temp=Sstf[i]; Sstf[i]=Sstf[j]; Sstf[j]=temp;

}

}

cout<

else {

while(Sstf[k]

if(Mnow-Sstf[l]<=(Sstf[r]-Mnow)) {

while(l>=0) {

cout<

sumArray[s]=Mnow-Sstf[l]; k++;

s=s+1;

}

Mnow=Sstf[0]; for(j=r;j

cout<

sum=sum+Mnow-Sstf[l]; Mnow=Sstf[l]; l=l-1;

sum+=Sstf[j]-Mnow;


05操作系统实验 - 磁盘管理实验要点.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:针对岗位能力需求的专科中医人才校企合作培养模式探讨与实践

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: