版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿园教师职业技能培训材料
- 琴行音乐培训学员退费流程合同2026
- 2025年单位开展内部控制专题培训
- 2025年第二季度严重精神障碍培训试卷及答案
- 2025年辐射安全与防护培训考试题库(附参考答案)
- 采购办公室制度
- 门店采购下单流程制度
- 采购办公茶叶制度
- 午托工作制度
- 分娩区工作制度
- 2026年北京市自来水集团有限责任公司校园招聘笔试备考题库及答案解析
- 2026四川成都未来医学城第一批面向社会招聘高层次人才8人考试参考试题及答案解析
- 安检员考试题库及答案
- 物流治安保卫责任制度
- 2026年陕西航空职业技术学院单招职业适应性测试题库带答案详解(能力提升)
- 三年级科学下册一单元第6节《设计指南针》课件
- 食材配送中心奖惩制度
- 《中国诗词大会》选拔专项训练试题及答案
- 完整版检验员考核表
- 产业发展调研方案
- 江西财经大学会计学原理 Ppt讲义
评论
0/150
提交评论