首页 OS实验指导五——磁盘调度模拟(新2014-12-15)

OS实验指导五——磁盘调度模拟(新2014-12-15)

举报
开通vip

OS实验指导五——磁盘调度模拟(新2014-12-15)OS实验指导五2013师范班+2014信管OS实验指导五2013级师范+2014信管专业《操作系统》实验指导五开课实验室:实验楼A207,A209 实验项目 (五)磁盘调度模拟实验 实验类型 验证 实验学时 4 一、实验目的用不同算法实现对磁盘调度的模拟实现,并比较各算法性能。二、设备与环境1.硬件设备:PC机一台2.软件环境:安装Windows操作系统或者Linux操作系统,并安装相关的程序开发环境,如C\C++\Java等编程语言环境。三、实验要求设计并实现一个分别利用下列磁盘调度算法进行磁盘调度的模拟程序...

OS实验指导五——磁盘调度模拟(新2014-12-15)
OS实验指导五2013师范班+2014信管OS实验指导五2013级师范+2014信管专业《操作系统》实验指导五开课实验室:实验楼A207,A209 实验项目 (五)磁盘调度模拟实验 实验类型 验证 实验学时 4 一、实验目的用不同算法实现对磁盘调度的模拟实现,并比较各算法性能。二、设备与环境1.硬件设备:PC机一台2.软件环境:安装Windows操作系统或者Linux操作系统,并安装相关的程序开发环境,如C\C++\Java等编程语言环境。三、实验要求设计并实现一个分别利用下列磁盘调度算法进行磁盘调度的模拟程序。(1)扫描算法(2)循环扫描算法设计要求:1.磁头初始磁道号,磁头初始运动方向,序列长度,磁道号序列等数据可键盘输入。2.最好能实现磁道号序列中磁道号的动态增加。3.磁道访问序列以链 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 的形式存储。4.给出各磁盘调度算法的调度顺序和平均寻道长度。四、实验设计参考1.算法说明(1)扫描算法(SCAN)扫描算法不仅考虑到欲访问的磁道与当前磁道的距离,更优先考虑的是磁头的当前移动方向。例如,当磁头正在自里向外移动时,扫描算法所选择的下一个访问对象应是其欲访问的磁道既在当前磁道之外,又是距离最近的。这样自里向外地访问,直到再无更外的磁道需要访问才将磁臂换向,自外向里移动。这时,同样也是每次选择这样的进程来调度,即其要访问的磁道,在当前磁道之内,从而避免了饥饿现象的出现。由于这种算法中磁头移动的规律颇似电梯的运行,故又称为电梯调度算法。此算法基本上克服了最短寻道时间优先算法的服务集中于中间磁道和响应时间变化比较大的缺点,而具有最短寻道时间优先算法的优点即吞吐量较大,平均响应时间较小,但由于是摆动式的扫描 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 ,两侧磁道被访问的频率仍低于中间磁道。2、循环扫描算法(CSCAN)循环扫描算法是对扫描算法的改进。如果对磁道的访问请求是均匀分布的,当磁头到达磁盘的一端,并反向运动时落在磁头之后的访问请求相对较少。这是由于这些磁道刚被处理,而磁盘另一端的请求密度相当高,且这些访问请求等待的时间较长,为了解决这种情况,循环扫描算法规定磁头单向移动。例如,只自里向外移动,当磁头移到最外的被访问磁道时,磁头立即返回到最里的欲访磁道,即将最小磁道号紧接着最大磁道号构成循环,进行扫描。2.主要功能模块 流程 快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计 图3.源程序参考如下:#include<iostream>#include<string>#include<conio.h>#include<windows.h>#include<iomanip>#include<stdlib.h>usingnamespacestd;classLinList;structLinNode{intno;LinNode*next;};classLinList{private:LinNode*head;public:intsize;LinList()//构造函数,用于构造头结点和声明长度{head=newLinNode;head->next=NULL;size=0;}voidInsert(intno)//插入函数{LinNode*newnode=newLinNode;newnode->no=no;newnode->next=NULL;Index(size-1)->next=newnode;size++;}LinNode*Index(inti)//定位函数{if(i<-1||i>size-1){cout<<"";exit(0);}if(i==-1)returnhead;if(i==0)returnhead->next;LinNode*p=head->next;intk=0;while(p!=NULL&&k<i){p=p->next;k++;}returnp;}voidSCAN1(intstart_place)//电梯调度算法(向外寻道){cout<<"->SCAN调度算法(向外寻道)如下:";floatsum=0;floatave;int*a=sort();for(i=0;i<size;i++){if(start_place<=a[i]){for(intm=i;m<size;m++){if(i==0&&m==size-1){cout<<a[m]<<endl;sum+=abs(a[m]-a[m-1]);}else{cout<<a[m]<<"->";if(m==i){sum+=abs(start_place-a[i]);}else{sum+=abs(a[m]-a[i]);}}}for(intn=i-1;n>=0;n--){if(n==i-1){sum+=abs(a[n]-a[size-1]);}if(n!=i-1){sum+=abs(a[n]-a[n+1]);}if(n==0){cout<<a[n]<<endl<<endl;}else{cout<<a[n]<<"->";}}ave=sum/size;cout<<"->平均寻道长度为:"<<ave<<endl;break;}}}voidSCAN2(intstart_place)//电梯调度算法(向内寻道){cout<<"->SCAN调度算法(向内寻道)如下:";floatsum=0;floatave;int*a=sort();for(inti=0;i<size;i++){if(start_place<=a[i]){for(intn=i-1;n>=0;n--){if(n==i-1){sum+=abs(a[n]-a[i]);}if(n!=i-1){sum+=abs(a[n]-a[n+1]);}if(n==0){cout<<a[n]<<"->";}else{cout<<a[n]<<"->";}}for(intm=i;m<size;m++){cout<<a[m]<<"->";if(m==i){sum+=abs(start_place-a[0]);}else{sum+=abs(a[m]-a[m-1]);}}cout<<"\n";ave=sum/size;cout<<"->平均寻道长度为:"<<ave<<endl;break;}}}voidCSCAN(intstart_place)//循环算法{cout<<"->CSCAN调度算法如下:";floatsum=0;floatave;int*a=sort();for(inti=0;i<size;i++){if(start_place<=a[i]){for(intm=i;m<size;m++){if(i==0&&m==size-1){cout<<a[m]<<endl;sum+=abs(a[m]-a[m-1]);}else{cout<<a[m]<<"->";if(m==i){sum+=abs(start_place-a[i]);}else{sum+=abs(a[m]-a[m-1]);}}}for(intn=0;n<=i-1;n++){if(n==0){sum+=abs(a[n]-a[size-1]);}if(n!=0){sum+=abs(a[n]-a[n-1]);}if(n==i-1){cout<<a[n]<<endl<<endl;}else{cout<<a[n]<<"->";}}ave=sum/size;cout<<"->平均寻道长度为:"<<ave<<endl;break;}}}voidshow()//显示函数{for(inti=0;i<size;i++){if(i==size-1){cout<<Index(i)->no<<endl<<endl;break;}cout<<Index(i)->no<<"->";}}int*sort()//排序{intcount=0;int*a=newint[size];a[0]=Index(0)->no;count++;for(inti=1;i<size;i++){for(intj=0;j<count;j++){if(Index(i)->no<a[j]){for(intk=count;k>j;k--){a[k]=a[k-1];}a[j]=Index(i)->no;count++;break;}if(Index(i)->no>=a[j]){if(j==count-1){a[count]=Index(i)->no;count++;break;}else{continue;}}}}returna;}};voidmain(){cout<<"*********************************"<<endl;cout<<"**丨磁*盘*调*度*2丨**"<<endl;cout<<"*********************************"<<endl;LinListlinlist;inti,start_place;cout<<"->请输入需要调度的序列(以0结束):";while(cin>>i&&i){linlist.Insert(i);}cout<<"->请输入开始的磁道号:";cin>>start_place;cout<<"->链表的长度为:"<<linlist.size<<endl;cout<<"->单链表显示:";linlist.show();intflag=1;while(flag){cout<<"**************************"<<endl;cout<<"*1:返回重新输入磁道*"<<endl;cout<<"*2:循环扫描算法*"<<endl;cout<<"*3:扫描算法*"<<endl;cout<<"*4:EXIT退出*"<<endl;cout<<"**************************"<<endl;cout<<"->请输入数字:";intk;cin>>k;switch(k){case1:main();break;case2:linlist.CSCAN(start_place);break;case3:{cout<<"******************************"<<endl;cout<<"*5:向外寻道按,6:向内寻道按*"<<endl;cout<<"******************************"<<endl;cout<<"请输入数字5或6->";intj;cin>>j;switch(j){case5:linlist.SCAN1(start_place);break;case6:linlist.SCAN2(start_place);break;}}break;case4:{flag=0;break;cout<<"->输入任意字符结束:"<<endl;getche();}}}}五、思考提高:1.试选用其它算法如最短寻道优先算法实现磁盘调度模拟。2. 分析 定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析 以上算法会否出现“磁臂粘着”现象。开始手动输入磁道选择调度算法SCAN算法CSCAN算法向内寻道向外寻道显示运行结果结束第1页共9页PAGE第6页
本文档为【OS实验指导五——磁盘调度模拟(新2014-12-15)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
豆浆
暂无简介~
格式:doc
大小:73KB
软件:Word
页数:0
分类:小学语文
上传时间:2020-03-22
浏览量:0