欢迎来到天天文库
浏览记录
ID:30217171
大小:229.50 KB
页数:11页
时间:2018-12-28
《模拟实现磁盘调度算法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实用标准文案《操作系统》课程实验实验课题:模拟实现磁盘调度算法姓名:****学号:*****年级班级:08级信息与计算科学教学班级:操作系统专业方向:08信本软件方向指导教师:实验时间:2010-12-9精彩文档实用标准文案一、实验名称:模拟实现磁盘调度算法1实验目的:a、观察、体会操作系统的磁盘调度方法,并通过一个简单的磁盘调度模拟程序的实现,加深对磁盘调度的理解。b、提高实际动手编程能力,为日后从事软件开发工作打下坚实基础。2实验要求:a、使用模块化设计思想来设计。b、给出主函数和各个算法函数的流程图。c、学生可按照自身条件,随意选择采用的算法。二
2、、实验算法分析总流程图三、实验内容及实验步骤1实验内容a、模拟实现磁盘调度算法:FCFS,最短寻道优先,电梯算法(实现其中之一种以上)。b、磁道请求服务顺序由用户输入(可通过从指定的文本文件(TXT文件)中取出)。精彩文档实用标准文案2实验步骤1)打开microsoftvasualC++6.0“开始”菜单—所有程序—单击“microsoftvasualC++6.0”,进入创建页面。2)单击标题栏“文件”选择“新建”进入界面如下:选择‘工程,win32consoleapplication’编辑工程名称‘zhuxuemin4’存储在d盘,创建‘创建新工作区
3、’确定。3)创建文件:单击标题栏“文件”选择“新建”进入界面类似于上面的界面。4)在建好的文件中加入附件中的源程序,并进行编译。四、实验原始记录及结果分析1先来先服务调度算法精彩文档实用标准文案2最短寻道优先调度算法3电梯调度算法精彩文档实用标准文案五、参考代码#include#include#include#includeconstintMAXQUEUE=200;//定义请求队列最大长度//磁道号请求结构体定义typedefstructTRACK_Node{intiGo;/
4、/要访问的磁道号intiVisited;//磁道是否已经访问标志(1:已访问;0:末访问)}TRACK;精彩文档实用标准文案TRACKqueue[MAXQUEUE];//磁道号请求队列数组intiReqNum=0;//磁道访问请求数intiStart=0;//磁头初始位置intiNow=0;//磁头当前位置intiSum=0;//总移动磁道数intiInput;//用户当前输入的整数charsFileName[20];//文件名voidInit()//初始化函数{inti;for(i=0;i5、//设置要访问的磁道号为不可能的数-1,以区别正常请求磁道号queue[i].iVisited=0;//设置磁道是否已经访问标志为0:末访问}}//voidInit()voidReset()//重置访问标志、磁头当前位置、总移动磁道数{inti;for(i=0;i6、Sum=0;//总移动磁道数}//voidReset()intReadTrackFile()//读入磁道号流文件{FILE*fp;intiTemp;cout<<"请输入磁道号流(文本)文件名(注意:包括后缀名):";cin>>sFileName;//从标准输入获取用户当前输入的文件名if((fp=fopen(sFileName,"r"))==NULL){cout<7、的磁道号依次存入磁道号请求队列数组{fscanf(fp,"%d",&iTemp);queue[iReqNum].iGo=iTemp;iReqNum++;//磁道访问请求数}}//if((fp=fopen(sFileName,"r"))==NULL)return0;}//voidReadTrackFile()voidFCFS()//先来先服务调度算法{inti;Reset();//重置访问标志、磁头当前位置、总移动磁道数cout<8、ut<<"先来先服务调度算法的调度结果:"<
5、//设置要访问的磁道号为不可能的数-1,以区别正常请求磁道号queue[i].iVisited=0;//设置磁道是否已经访问标志为0:末访问}}//voidInit()voidReset()//重置访问标志、磁头当前位置、总移动磁道数{inti;for(i=0;i6、Sum=0;//总移动磁道数}//voidReset()intReadTrackFile()//读入磁道号流文件{FILE*fp;intiTemp;cout<<"请输入磁道号流(文本)文件名(注意:包括后缀名):";cin>>sFileName;//从标准输入获取用户当前输入的文件名if((fp=fopen(sFileName,"r"))==NULL){cout<7、的磁道号依次存入磁道号请求队列数组{fscanf(fp,"%d",&iTemp);queue[iReqNum].iGo=iTemp;iReqNum++;//磁道访问请求数}}//if((fp=fopen(sFileName,"r"))==NULL)return0;}//voidReadTrackFile()voidFCFS()//先来先服务调度算法{inti;Reset();//重置访问标志、磁头当前位置、总移动磁道数cout<8、ut<<"先来先服务调度算法的调度结果:"<
6、Sum=0;//总移动磁道数}//voidReset()intReadTrackFile()//读入磁道号流文件{FILE*fp;intiTemp;cout<<"请输入磁道号流(文本)文件名(注意:包括后缀名):";cin>>sFileName;//从标准输入获取用户当前输入的文件名if((fp=fopen(sFileName,"r"))==NULL){cout<7、的磁道号依次存入磁道号请求队列数组{fscanf(fp,"%d",&iTemp);queue[iReqNum].iGo=iTemp;iReqNum++;//磁道访问请求数}}//if((fp=fopen(sFileName,"r"))==NULL)return0;}//voidReadTrackFile()voidFCFS()//先来先服务调度算法{inti;Reset();//重置访问标志、磁头当前位置、总移动磁道数cout<8、ut<<"先来先服务调度算法的调度结果:"<
7、的磁道号依次存入磁道号请求队列数组{fscanf(fp,"%d",&iTemp);queue[iReqNum].iGo=iTemp;iReqNum++;//磁道访问请求数}}//if((fp=fopen(sFileName,"r"))==NULL)return0;}//voidReadTrackFile()voidFCFS()//先来先服务调度算法{inti;Reset();//重置访问标志、磁头当前位置、总移动磁道数cout<8、ut<<"先来先服务调度算法的调度结果:"<
8、ut<<"先来先服务调度算法的调度结果:"<
此文档下载收益归作者所有