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

付费下载

下载本文档

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

文档简介

1、操作系统原理 课程设计报告书 题 目: 磁盘调度先来先服务算法 学 号: 学生姓名: 专 业: 计算机科学与技术 指导教师: 2014 年 5 月 29 目录 1 功能描述 根据进程请求访问磁盘的先后次序进行调度,从而计算出磁头移动的总距离和平均寻道 长度。 功能实现思想 这是一种比较简单的磁盘调度算法。 它根据进程请求访问磁盘的先后次序进行调度。 此 算法的优点是公平、 简单, 且每个进程的请求都能依次得到处理, 不会出现某一进程的请求 长期得不到满足的情况。 此算法由于未对寻道进行优化, 在对磁盘的访问请求比较多的情况 下,此算法将降低设备服务的吞吐量, 致使平均寻道时间可能较长, 但各进

2、程得到服务的响 应时间的变化幅度较小。 功能详述 根据进程请求访问磁盘的先后次序进行调度,首先根据提示输入总的磁道数、提出磁盘 I/O 申请的进程数、开始磁道号和磁道序列。通过程序调用函数输出磁盘请求序列和磁盘扫 描序列,从而计算出磁头移动的总距离和平均寻道长度。 2 系统设计 系统总体设计 数据结构描述 void?FCFS(int?cidao,int?m)输入磁道号, 按先来先服务的策略输出磁盘请求序列和 磁盘扫描序列,求移动的总距离和平均寻道长度,输出移动的总磁道数和平均寻道长度。 函数功能分析 由于一开始要对键盘输入的磁道数和要使用的算法进行一次有效性的判断,我使用了 int?decid

3、e(char?str) ,如果输入的信息不是 09 之间的数都将被判定为不合法, 合法后 才能进行下一步。 判断完合法性后, 要将输入的字符转化为数字, 这里我用了 int trans(char ,该算法主 str,int a) 。先来先服务调度算法我使用了 void?FCFS(int?cidao,int?m) 要完成按原来键盘输入的次序来寻道,然后输出移动的总磁道数和平均寻道长度。 程序函数调用关系 主函数调用子函数, 子函数也可 图为磁盘调度算法之先来先服务的函数之间的调用关系, 以调用子函数。 图 1 程序函数调用关系 系统详细设计 设计任务 本系统采用先来先服务算法 FCFS,来实现磁

4、盘调度的模拟。 设计要求 根据磁盘调度算法的思想,编程实现求先来先服务算法的平均寻道长度。 算法思想 先来先服务的算法,即先来的请求先被响应。FCFS 算法看起来是比较合理的算法,但 是当请求频率过高的时候 FCFS算法的响应时间就会大大的延长,这也是最基本的算法,直 接实现的是由输入的顺序来顺序的执行。 ? FCFS 算法流程图 图 2 FCFS 算法流程图 3 系统实现 1)开发环境: Window7 2)开发工具和编程语言 开发工具: Visual C+ 编程语言: C+ 4 系统测试与分析 系统运行结果 图 3 运行结果 系统运行结果分析 根据系统提示进行输入数据,如输入的总磁道数为9

5、,磁盘 I/O 申请的进程数为 9,输 入的磁道系列为 55 58 39 18 90 160 150 38 184,输入开始磁道号: 100(当输入的数据 类型有误是,会提醒重新输入) ,可以得到磁盘请求的序列和扫描的序列都为 55 58 39 18 90 160 150 38 184 ,也得到了移动的总磁道数为 498 和平均寻道长度为 。实验结果符合预想 的结果。 5 总结 通过本次课程设计, 我对磁盘的调度算法之先来先服务有了更深的了解, 但在本次课程 设计过程也遇到了一些问题, 最后在同学的帮助下通过各种尝试, 发现需将字符转化成数字, 这也算是一个不小的收获吧。 总体而言, 本次课设

6、让我学会了很多, 也让我对以前学过的知 识回顾了很多, 本次课程设计涉及的算法并不难, 都是些基本的算法, 所以告诉我们要打好 基础,学好数据结构也是很重要的。还有就是让我对操作系统的基础知识了解得更透彻了。 我深刻认识到算法的逻辑性对程序的重要影响,算法的准确度对程序运行结果的重要影响, 这对我以后在操作系统的学习中有极大帮助。 参考文献 1】汤小丹 2】付永华 汤子瀛 计算机操作系统 (第三版)西安电子科技大学出版社 王素立 薛海燕 C+高级语言程序设计 中国电力出版社 3】张海云 计算机操作系统原理实验指导书 中国电力出版社 附:源程序代码 #include #include #incl

7、ude #include using namespace std; #define maxsize 100 /定义最大数组域 int decide(char str) /判断输入数据是否有效 int i=0; while(stri!=0) if(stri9) return 0; break; i+; return i; int trans(char str,int a) /将字符串转换成数字 int i; int sum=0; for(i=0;ia;i+) sum=sum+(int)(stri-0)*pow(10,a-i-1); return sum; void FCFS(int cidao,

8、int m) /磁道号数组,个数为 int beginnumber;/ 开始的磁道号 int sum=0; / 总寻道长度 int j,i; int a; / 字符串个数 char str100; float ave; / 平均寻道长度 B:coutstr; / 对输入数据进行有效性判断 a=decide(str); if(a=0) cout 输入数据的类型错误 , 请重新输入! endl; goto B;/输入错误,跳转到 B,重新输入 else beginnumber=trans(str,a); / 输入开始的磁道号 sum+=abs(cidao0-beginnumber); cout 磁

9、盘请求序列为: ; for( i=0;im;i+) / 按先来先服务的策略输出磁盘请求序列 coutcidaoi ; coutendl; cout 磁盘扫描序列为: ; for( i=0;im;i+) / 输出磁盘扫描序列 coutcidaoi ; for(i=0,j=1;jm;i+,j+) / 求平均寻道长度 sum+=abs(cidaoj-cidaoi); ave=(float)(sum)/(float)(m); coutendl; cout 移动的总磁道数为: sumendl; cout 平均寻道长度: aveendl; void main() coutendl; cout 计算机科学与

10、技术 endl; cout 3endl; cout 张愿丽 endl; coutendl; int a; int cidaomaxsize; int i=0,number; int n; coutn; coutendl; int m; coutm; coutendl; char str100; A:cout 请输入磁道序列( 0 结束): str; / 对输入数据进行有效性判断 a=decide(str); if(a=0) endl; endl; coutstr; / 对输入数据进行有效性判断 a=decide(str); if(a=0) cout 输入数据的类型错误 , 请重新输入! else cidaoi=trans(str,a); i+; number=i-1; / 要访问的磁道数 cout 您输入的磁道序列为: ; for(i=0;inumber;i+) coutcidaoi ; / 输出磁道序列 coutendl; FCFS(cidao,number); 教师评分表 评分细则 分数 理解功能及基

温馨提示

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

评论

0/150

提交评论