CSCAN磁盘调度算法 操作系统课程设计报告4.docx
- 文档编号:1484973
- 上传时间:2022-10-22
- 格式:DOCX
- 页数:14
- 大小:95.09KB
CSCAN磁盘调度算法 操作系统课程设计报告4.docx
《CSCAN磁盘调度算法 操作系统课程设计报告4.docx》由会员分享,可在线阅读,更多相关《CSCAN磁盘调度算法 操作系统课程设计报告4.docx(14页珍藏版)》请在冰豆网上搜索。
CSCAN磁盘调度算法操作系统课程设计报告4
CSCAN磁盘调度算法操作系统课程设计报告_(4)
哈尔滨理工大学
课 程 设 计
(计算机操作系统)
题 目:
CSCAN磁盘调度算法
班 级:
姓 名:
指导教师:
系主任:
2014年03月01日
1CSCAN磁盘调度算法问题课程设计
1.1分析题目
将queue[n]进行由小到大的排序,首先定位当前调度磁headstarts在queue[n]的位置,然后在此位置按给定的方向遍历queue[n],当道端点(queue[0]或queue[n-1])时,反向到另一端点再以此方向进行遍历,直到queue[n]中所有都调度完。
当调度磁道不在queue端点时,总的寻道长度为为前一个磁道与后一个磁道差值的累加,当到达端点且queue[n]未全调度时,总寻道长度加上端点值再加上磁盘磁道总长度,再加上下一个调度磁道的值,再按前面的算法进行,直到磁道全部都调度完毕,得到总的寻道长度,除以n得到平均寻道长度。
1.2数据结构
Hand:
当前磁道号;DiscLine[10]:
随机生成的磁道号;
voidSetDI(intDiscL[])生成随机磁道号算法;
voidCopyL(intSour[],intDist[],intx)数组Sour复制到数组Dist复制到x个数四详细设计;
voidDelInq(intSour[],intx,inty)数组Sour把x位置的数删除,x后的数组元素向前挪一位.
voidPaiXu()寻道长度由低到高排序
voidCSCAN(intHan,intDiscL[])循环扫描算法(CSCAN)
1.3流程图
1.4实现技术
为实现上述设计,采用C++语言,VS2008开发环境。
具体采用的技术如下:
循环扫描算法
实现步骤如下:
输入总磁道数(你可以输入200),点确定,进入第二个界面,再输入磁盘调度序列个数(你可以输入5),然后点确定。
依次输入5个值,再输入正在调入的磁道,选择磁盘调度算法12中的任意一个,若选择1后确认,选择磁道走向1.2若选择1,点确定,先输出排序后的磁盘序列:
(132089113189),再输出调度序列为:
(89201318911389)并且求出了总寻道长度为352,平均寻道长度为70.4。
运行结果如下:
1.5设计结论和心得
通过课程设计得到如下结论:
本次实验首先要了解磁盘调度方法的工作原理。
在课程设计前的准备工作时,先把这部分工作做完了。
在设计总的程序框架的时候,要注意各功能模块的位置,尽量做到简洁、有序;各功能模块与主程序要正确衔接。
有如下几点心得体会:
至此,计算机操作系统课程设计算法已经完成。
此次设计基本完成了所规定的功能,但由于这次设计的时间比较仓促,其中不免会有些纰漏,比如在程序的实现上还不够严谨,出错处理不够完善等多方面问题,这些都有进一步改善。
由于平时上课不是很认真许多概念没有理解清楚,导致在做设计时有点无从下手的感觉,只好边实验边看书直到弄懂概念后才开始做设计导致时间有点紧张,最终在同学和老师的指导下我完成了设计,此设计基本能够实现规定的要求但是还是不够完善,很多东西做的不够好,程序不够完善和严谨。
此次课程设计中我学到了很多东西,无论在理论上还是实践中,都得到不少的提高,这对于我以后的工作和学习都有一种巨大的帮助。
#include
#include
#include
usingnamespacestd;
voidmenu(){
cout<<"*********************菜单*********************"< cout<<"******1、循环扫描算法(CSCAN)**********"< cout<<"******2、退出**********"< cout<<"**********************************************"< } /*======================初始化序列=======================*/ voidinit(intqueue[],intqueue_copy[],intn){ inti; for(i=0;i queue[i]=queue_copy[i]; } //对当前正在执行的磁道号进行定位,返回磁道号小于当前磁道中最大的一个 intfix(intqueue[],intn,intheadstarts){ inti=0;while(i { i++; } if(i>n-1) returnn-1; //当前磁道号大于磁盘请求序列中的所有磁道 if(i==0) return-1; //当前磁道号小于磁盘请求序列中的所有磁道 else returni-1; //返回小于当前磁道号中最大的一个 } /*=================使用冒泡算法从小到大排序==============*/ int*bubble(intqueue[],intm) { inti,j; inttemp; for(i=0;i for(j=i+1;j { if(queue[i]>queue[j]) { temp=queue[i]; queue[i]=queue[j]; queue[j]=temp; } } cout<<"排序后的磁盘序列为: "; for(i=0;i { cout< } cout< returnqueue; } //n表示调度磁盘请求序列queue的长度,diskrode表示磁盘磁道的个数,headstarts表示目前正在调度的磁道; voidCSCAN(intqueue[],intn,intdiskrode,intheadstarts) { intdirection,i,fixi;cout<<"***********以下是CSCAN调度算法*************"< cout<<"请输入磁头的走向: 1.由内向外2.由外向内"< cout<<"请输入磁头的走向: "; cin>>direction;intcount=0; //count表示磁道移动的长度 *bubble(queue,n); fixi=fix(queue,n,headstarts); cout<<"调度序列为: "< if(fixi==-1) //headstarts比请求调度序列都小 { if(direction==1) //从大到小 { count+=queue[fixi+1]-queue[0]; //反向再反向 headstarts=queue[n-1]; cout< for(i=n-2;i>-1;--i) { cout< count+=headstarts-queue[i]; headstarts=queue[i]; } } if(direction==2) //从小到大 { for(i=0;i { cout< count+=queue[i]-headstarts; headstarts=queue[i]; } } }elseif(fixi==n-1) //headstarts比请求调度序列都大 { if(direction==1) //从大到小 { for(i=n-1;i>-1;--i) { cout< count+=headstarts-queue[i]; headstarts=queue[i]; } } if(direction==2) //从小到大 { cout< for(i=1;i { cout< count=count+(queue[i]-queue[i-1]); } count+=headstarts-queue[0]; } }else{ if(direction==1) //从大到小 { for(i=fixi;i>-1;i--) { cout< count+=headstarts-queue[i]; headstarts=queue[i]; } count=count+(queue[n-1]-queue[0]); //磁头走到0时再反向... headstarts=queue[n-1]; cout< { cout< count+=headstarts-queue[i]; headstarts=queue[i]; } } if(direction==2) //从小到大 { for(i=fixi+1;i { if(direction==2) //从小到大 { cout< count+=queue[i]-headstarts; headstarts=queue[i]; } } count+=queue[n-1]-queue[0]; //磁头走到n-1再反向走... headstarts=queue[0]; cout< for(i=1;i { cout< count+=queue[i]-headstarts; headstarts=queue[i]; } } } cout< cout<<"总的寻道长度为: "
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CSCAN磁盘调度算法 操作系统课程设计报告4 CSCAN 磁盘 调度 算法 操作系统 课程设计 报告