操作系统课程设计报告-磁盘调度先来先服务算法_第1页
操作系统课程设计报告-磁盘调度先来先服务算法_第2页
操作系统课程设计报告-磁盘调度先来先服务算法_第3页
操作系统课程设计报告-磁盘调度先来先服务算法_第4页
操作系统课程设计报告-磁盘调度先来先服务算法_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

-.z.《操作系统原理》课程设计报告书题目:磁盘调度先来先服务算法学号:学生**:专业:计算机科学与技术指导教师:2014年5月29目录84591功能描述1213741.1功能实现思想1208121.2功能详述1164172系统设计19862.1系统总体设计279592.1.1数据结构描述192042.1.2函数功能分析1138092.1.2程序函数调用关系2290062.2系统详细设计2285252.2.1设计任务261092.2.2设计要求2235072.2.3算法思想299962.2.4FCFS算法流程图3146023系统实现319514系统测试与分析4184664.1系统运行结果4192634.2系统运行结果分析4224405总结51564参考文献5230附:源程序代码614985教师评分表91功能描述根据进程请求访问磁盘的先后次序进行调度,从而计算出磁头移动的总距离和平均寻道长度。1.1功能实现思想这是一种比较简单的磁盘调度算法。它根据进程请求访问磁盘的先后次序进行调度。此算法的优点是公平、简单,且每个进程的请求都能依次得到处理,不会出现*一进程的请求长期得不到满足的情况。此算法由于未对寻道进行优化,在对磁盘的访问请求比较多的情况下,此算法将降低设备服务的吞吐量,致使平均寻道时间可能较长,但各进程得到服务的响应时间的变化幅度较小。1.2功能详述根据进程请求访问磁盘的先后次序进行调度,首先根据提示输入总的磁道数、提出磁盘I/O申请的进程数、开始磁道号和磁道序列。通过程序调用函数输出磁盘请求序列和磁盘扫描序列,从而计算出磁头移动的总距离和平均寻道长度。2系统设计2.1系统总体设计2.1.1数据结构描述voidFCFS(intcidao[],intm)输入磁道号,按先来先服务的策略输出磁盘请求序列和磁盘扫描序列,求移动的总距离和平均寻道长度,输出移动的总磁道数和平均寻道长度。2.1.2函数功能分析由于一开始要对键盘输入的磁道数和要使用的算法进行一次有效性的判断,我使用了intdecide(charstr[]),如果输入的信息不是0~9之间的数都将被判定为不合法,合法后才能进行下一步。判断完合法性后,要将输入的字符转化为数字,这里我用了inttrans(charstr[],inta)。先来先服务调度算法我使用了voidFCFS(intcidao[],intm),该算法主要完成按原来键盘输入的次序来寻道,然后输出移动的总磁道数和平均寻道长度。2.1.2程序函数调用关系下图为磁盘调度算法之先来先服务的函数之间的调用关系,主函数调用子函数,子函数也可以调用子函数。main()main()trans()decide()FCFS()trans()decide()FCFS()图1程序函数调用关系2.2系统详细设计2.2.1设计任务本系统采用先来先服务算法FCFS,来实现磁盘调度的模拟。2.2.2设计要求根据磁盘调度算法的思想,编程实现求先来先服务算法的平均寻道长度。2.2.3算法思想先来先服务的算法,即先来的请求先被响应。FCFS算法看起来是比较合理的算法,但是当请求频率过高的时候FCFS算法的响应时间就会大大的延长,这也是最基本的算法,直接实现的是由输入的顺序来顺序的执行。2.2.4FCFS算法流程图开始输入总的磁道数开始输入总的磁道数输入提出磁盘I/O申请的进程数输入提出磁盘I/O申请的进程数输入磁道序列(以0结束)输入磁道序列(以0结束)输入开始的磁道号输出磁盘请求序列和扫描序列输出磁盘请求序列和扫描序列求移动的总的磁道数求移动的总的磁道数求平均寻道长度结束结束图2FCFS算法流程图3系统实现1)开发环境:Window72)开发工具和编程语言开发工具:VisualC++6.0编程语言:C++4系统测试与分析4.1系统运行结果图3运行结果4.2系统运行结果分析根据系统提示进行输入数据,如输入的总磁道数为9,磁盘I/O申请的进程数为9,输入的磁道系列为555839189016015038184,输入开始磁道号:100(当输入的数据类型有误是,会提醒重新输入),可以得到磁盘请求的序列和扫描的序列都为555839189016015038184,也得到了移动的总磁道数为498和平均寻道长度为55.3333。实验结果符合预想的结果。5总结通过本次课程设计,我对磁盘的调度算法之先来先服务有了更深的了解,但在本次课程设计过程也遇到了一些问题,最后在同学的帮助下通过各种尝试,发现需将字符转化成数字,这也算是一个不小的收获吧。总体而言,本次课设让我学会了很多,也让我对以前学过的知识回顾了很多,本次课程设计涉及的算法并不难,都是些基本的算法,所以告诉我们要打好基础,学好数据结构也是很重要的。还有就是让我对操作系统的基础知识了解得更透彻了。我深刻认识到算法的逻辑性对程序的重要影响,算法的准确度对程序运行结果的重要影响,这对我以后在操作系统的学习中有极大帮助。参考文献【1】汤小丹汤子瀛《计算机操作系统》(第三版)**电子科技大学【2】付永华王素立薛海燕《C++高级语言程序设计》中国电力【3】*海云《计算机操作系统原理实验指导书》中国电力附:源程序代码*include<stdio.h>*include<stdlib.h>*include<math.h>*include<iostream>usingnamespacestd;*definema*size100//定义最大数组域intdecide(charstr[])//判断输入数据是否有效{inti=0; while(str[i]!='\0') { if(str[i]<'0'||str[i]>'9') { return0; break; } i++; } returni;}inttrans(charstr[],inta)//将字符串转换成数字{ inti; intsum=0; for(i=0;i<a;i++) { sum=sum+(int)((str[i]-'0')*pow(10,a-i-1)); } returnsum;}voidFCFS(intcidao[],intm)//磁道号数组,个数为m{intbeginnumber;//开始的磁道号intsum=0;//总寻道长度intj,i; inta;//字符串个数 charstr[100];floatave;//平均寻道长度 B:cout<<"请输入开始的磁道号:";cin>>str;//对输入数据进行有效性判断a=decide(str);if(a==0) { cout<<"输入数据的类型错误,请重新输入!"<<endl; gotoB;//输入错误,跳转到B,重新输入 }else beginnumber=trans(str,a);//输入开始的磁道号sum+=abs(cidao[0]-beginnumber); cout<<"磁盘请求序列为:";for(i=0;i<m;i++)//按先来先服务的策略输出磁盘请求序列{cout<<cidao[i]<<"";} cout<<endl; cout<<"磁盘扫描序列为:";for(i=0;i<m;i++)//输出磁盘扫描序列{cout<<cidao[i]<<"";}for(i=0,j=1;j<m;i++,j++)//求平均寻道长度{sum+=abs(cidao[j]-cidao[i]);ave=(float)(sum)/(float)(m);}cout<<endl; cout<<"移动的总磁道数为:"<<sum<<endl;cout<<"平均寻道长度:"<<ave<<endl;}voidmain(){cout<<""<<endl;cout<<"计算机科学与技术"<<endl;cout<<"111006333"<<endl;cout<<"*愿丽"<<endl;cout<<""<<endl;inta; intcidao[ma*size];inti=0,number;intn;cout<<"请输入总磁道数:";cin>>n;cout<<endl;intm;cout<<"请输入提出磁盘I/O申请的进程数:";cin>>m;cout<<endl;charstr[100];A:cout<<"请输入磁道序列(0结束):"<<endl;cin>>str;//对输入数据进行有效性判断a=decide(str);if(a==0){ cout<<"输入数据的类型错误,请重新输入!"<<endl; gotoA;//输入错误,跳转到A,重新输入} else cidao[i]=trans(str,a);i++;while(cidao[i-1]!=0){ cin>>str;//对输入数据进行有效性判断a=decide(str);if(a==0) cout<<"输入数据的类型错误,请重新输入!"<<endl;else { cidao[i]=trans(str,a);i++; }}number=i-1;//要访问的磁道数cout<<"您输入的磁道序列为:";for(i=0;i<number;i++){cout<<cidao[i]<<"";//输出磁道序列}cout<<endl;FCF

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论