首页 > 分享 > 第5章与设备管理有关的操作系统算法实践作业.doc

第5章与设备管理有关的操作系统算法实践作业.doc

《第5章与设备管理有关的操作系统算法实践作业.doc》由会员分享,可在线阅读,更多相关《第5章与设备管理有关的操作系统算法实践作业.doc(5页珍藏版)》请在知学网上搜索。

1、第5章与设备管理有关的操作系统算法实践作业 第5章 与设备管理有关的操作系统算法实践作业 参照“强化实践能力培养课程内容”中“磁盘移臂调度算法实践能力培养考核选例”程序编写一个能演示“最短寻找时间优先算法Sstf"的程序。该程序能分析出“最短寻找时间优先算法"在响应任意给定的一组磁盘请求序列时磁头移动的过程,即能统计和报告出“最短寻找时间优先算法"下磁头响应请求的顺序、移臂的总量和掉头的次数。 答:实验代码及说明 #include ”stdio。h" #include ”stdlib。h” void CopyL(int Sour[],int Dist[] ,int x); //

2、数组Sour复制到数组Dist,复制到x个数 void SetDI(int DiscL[]); //随机生成磁道数 void Print(int Pri[],int x); //打印输出数组Pri void DelInq(int Sour[],int x,int y); //数组Sour把x位置的数删除,并把y前面的数向前移动,y后的数保持不变(即会出现2个y) void SSTF(int Han,int DiscL[]); //最短寻道时间优先算法(SSTF) void PaiXu(); //寻道长度由低到高排序 void Pri(); int NAll=0;

3、 int Best[5][2]; //用作寻道长度由低到高排序时存放的数组 int Limit=0; //输入寻找的范围磁道数i int Jage; float Aver=0; int main() { int i; int DiscLine[10]; //声明准备要生成的随机磁道号的数组 int Hand; //磁道数 int Con=1; int n; while(Con==1) { Jage=0; printf(”n 请输入初始的磁道数(0

4、rintf(”n+ 输入寻找的范围:"); scanf("%d",&Limit); if(Limit〉65536){ printf("超出范围!"); } else{ printf(" *********************************************n”); printf(” **************** 磁盘调度算法 ******************n"); printf(" *********************************************n"); printf

5、(” * 2。最短寻道时间优先算法(SSTF) *n"); printf(" *********************************************n”); scanf("%d",&n); if(n==0) exit(0); printf("n"); switch(n) { case 2: SetDI(DiscLine); //随机生成磁道数 SSTF(Hand,DiscLine); //最短寻道时间优先算法(SSTF) break; } printf("

6、nn+ 是否继续(按0结束,按1继续)?"); scanf(”%5d”,&Con); } } } //数组Sour复制到数组Dist,复制到x个数 void CopyL(int Sour[],int Dist[] ,int x) { int i; for(i=0;i<=x;i++) { Dist[i]=Sour[i]; } } //打印输出数组Pri void Print(int Pri[],int x) { int i; for(i=0;i<=x;i++) { printf(”%5d”,Pri[i]); }

7、 } //随机生成磁道数 void SetDI(int DiscL[]) { int i; for(i=0;i〈=9;i++) { DiscL[i]=rand()%Limit;//随机生成10个磁道号 } printf(”+ 需要寻找的磁道号:”); Print(DiscL,9); //输出随机生成的磁道号 printf(”n"); } //数组Sour把x位置的数删除,并把y前面的数向前移动,y后的数保持不变(即会出现2个y) void DelInq(int Sour[],int x,int y) { int i; for(

8、i=x;i

9、道号到临时数组RLine printf(”n+ 按照SSTF算法磁道的访问顺序为:”); for(i=0;i〈=9;i++) { Min=64000; for(j=0;j〈=k;j++) //内循环寻找与当前磁道号最短寻道的时间的磁道号 { if(RLine[j]>Han) //如果第一个随机生成的磁道号大于当前的磁道号,执行下一句 Temp=RLine[j]-Han; //求出临时的移动距离 else Temp=Han-RLine[j]; //求出临时的移动距离 if(Temp

10、//如果每求出一次的移动距离小于Min,执行下一句 { Min=Temp; //Temp临时值赋予Min h=j; //把最近当前磁道号的数组下标赋予h } } All=All+Min; //统计一共移动的距离 printf(”%5d",RLine[h]); Han=RLine[h]; DelInq(RLine,h,k); //每个磁道数向前移动一位 k—-; } Best[Jage][1]=All;//Best[][1]存放移动磁道数 Best[Jage][0]=2;//Best[][0]存放算

11、法的序号为:2 Jage++;//排序序号加1 Aver=((float)All)/10;//求平均寻道次数 printf(”n+ 移动磁道数:<%5d> ",All); printf(”n+ 平均寻道长度:*%0。2f* ”,Aver); } void PaiXu() { int i,j,Temp; for(i=0;i〈5;i++) { for(j=0;j〈4;j++) { if(Best[j][1]>Best[j+1][1]) //如果前一个算法的移动磁道距离大于后一个移动磁道数,执行下面语句 { Temp=Best[j+1][1]; //从这起下三行执行冒泡法将移动距离大小排序,排完后则执行每个算法的排序 Best[j+1][1]=Best[j][1]; Best[j][1]=Temp; Temp=Best[j+1][0]; //将每个算法的序号用冒泡法排序 Best[j+1][0]=Best[j][0]; Best[j][0]=Temp; } } } }

相关知识

第5章与设备管理有关的操作系统算法实践作业.doc
【操作系统】RR算法(时间片轮转,假设时间片q=1)
电子商务网站建设与实践(第5版)
《第4节 家居环境与健康》课后作业(辽宁省市级优课).doc
第5章 园艺设施地规划设计与建设.ppt
放射治疗物理学:理论与实践(第2版)
(北师大2024版)生物七年级上册第5章《绿色开花植物的生活史》 大单元教学设计.docx
第5章花香遗传
电子商务网站建设与实践(第2版)
实践说:如何开发亿级电商网站

网址: 第5章与设备管理有关的操作系统算法实践作业.doc https://m.huajiangbk.com/newsview2043412.html

所属分类:花卉
上一篇: 四川农业大学《花卉学(实践)(专
下一篇: 成都市妇女儿童中心医院:护士也“