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

下载本文档

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

文档简介

1、操作系统原理课程设计报告书题 目: 磁盘调度先来先服务算法 学 号:学生姓名:专 业: 计算机科学与技术指导教师:2014年 5 月 29目录1 功能描述 21.1 功能实现思想 . 21.2 功能详述 . 22 系统设计 22.1 系统总体设计 . 22.1.1 数据结构描述. 22.1.2 函数功能分析. 22.1.2 程序函数调用关系 . 32.2 系统详细设计 . 32.2.1 设计任务 . 32.2.2 设计要求 . 32.2.3 算法思想 . 32.2.4 FCFS 算法流程图 . 43 系统实现 44 系统测试与分析 . 54.1 系统运行结果 . 54.2 系统运行结果分析 .

2、 55 总结 6参考文献 6附:源程序代码 . 7教师评分表 101 功能描述根据进程请求访问磁盘的先后次序进行调度,从而计算出磁头移动的总距离和平均寻道 长度。1.1 功能实现思想这是一种比较简单的磁盘调度算法。 它根据进程请求访问磁盘的先后次序进行调度。 此 算法的优点是公平、 简单, 且每个进程的请求都能依次得到处理, 不会出现某一进程的请求 长期得不到满足的情况。 此算法由于未对寻道进行优化, 在对磁盘的访问请求比较多的情况 下,此算法将降低设备服务的吞吐量, 致使平均寻道时间可能较长, 但各进程得到服务的响 应时间的变化幅度较小。1.2 功能详述根据进程请求访问磁盘的先后次序进行调度

3、,首先根据提示输入总的磁道数、提出磁盘 I/O 申请的进程数、开始磁道号和磁道序列。通过程序调用函数输出磁盘请求序列和磁盘扫 描序列,从而计算出磁头移动的总距离和平均寻道长度。2 系统设计2.1 系统总体设计2.1.1 数据结构描述void FCFS(int cidao,intm)输入磁道号,按先来先服务的策略输出磁盘请求序列和磁盘扫描序列, 求移动的总距离和平均寻道长度, 输出移动的总磁道数和平均寻道长度。2.1.2 函数功能分析由于一开始要对键盘输入的磁道数和要使用的算法进行一次有效性的判断,我使用了 int decide(char str) ,如果输入的信息不是 09 之间的数都将被判定

4、为不合法, 合法 后才能进行下一步。判断完合法性后,要将输入的字符转化为数字,这里我用了 inttrans(char str,int a) 。 先 来 先 服 务 调 度 算 法 我 使 用 了 void FCFS(int cidao,intm),该算法主要完成按原来键盘输入的次序来寻道,然后输出移动的总磁道数和平均寻道长度。2.1.2 程序函数调用关系下图为磁盘调度算法之先来先服务的函数之间的调用关系, 主函数调用子函数, 子函数也可 以调用子函数。图 1 程序函数调用关系2.2 系统详细设计2.2.1 设计任务本系统采用先来先服务算法 FCFS,来实现磁盘调度的模拟。2.2.2 设计要求根

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

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

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

8、sing 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,int m) /磁道号数组,个数为int begi

9、nnumber;/ 开始的磁道号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,重新输入elsebeginnumber=trans(str,a); / 输入开始的磁道号 sum+=abs(cidao0-beginnumber);cout 磁盘请求序列为: ;for( i=0;im;i+) / 按先来先服务的策略输出磁

10、盘请求序列 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 计算机科学与技术 endl;cout 111006333endl;cout 张愿丽 endl;coutendl;int

11、 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 输入数据的类型错误 , 请重新输入! elsecidaoi=trans(str,a);i+; number=i-1; / 要访问的磁道数 cout 您输入的磁道序列为: ; for(i=0;inumber;i+)coutcidaoi ; / 输出磁道序列 coutendl; FCFS(cidao,num

温馨提示

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

评论

0/150

提交评论