操作系统课程设计磁盘调度先来先服务算法完整版.docx
- 文档编号:28841773
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:11
- 大小:43.53KB
操作系统课程设计磁盘调度先来先服务算法完整版.docx
《操作系统课程设计磁盘调度先来先服务算法完整版.docx》由会员分享,可在线阅读,更多相关《操作系统课程设计磁盘调度先来先服务算法完整版.docx(11页珍藏版)》请在冰豆网上搜索。
操作系统课程设计磁盘调度先来先服务算法完整版
HUAsystemofficeroom【HUA16H-TTMS2A-HUAS8Q8-HUAH1688】
操作系统课程设计磁盘调度先来先服务算法
《操作系统原理》
课程设计报告书
题目:
磁盘调度先来先服务算法
学号:
学生姓名:
专业:
计算机科学与技术
指导教师:
2014年5月29
1功能描述1
1.1功能实现思想1
1.2功能详述1
2系统设计1
2.1系统总体设计1
2.1.1数据结构描述1
2.1.2函数功能分析1
2.1.2程序函数调用关系2
2.2系统详细设计2
2.2.1设计任务2
2.2.2设计要求2
2.2.3算法思想2
2.2.4FCFS算法流程图3
3系统实现3
4系统测试与分析4
4.1系统运行结果4
4.2系统运行结果分析4
5总结5
参考文献5
附:
源程序代码6
教师评分表9
1功能描述
根据进程请求访问磁盘的先后次序进行调度,从而计算出磁头移动的总距离和平均寻道长度。
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()
trans()
decide()
FCFS()
图1程序函数调用关系
2.2系统详细设计
2.2.1设计任务
本系统采用先来先服务算法FCFS,来实现磁盘调度的模拟。
2.2.2设计要求
根据磁盘调度算法的思想,编程实现求先来先服务算法的平均寻道长度。
2.2.3算法思想
先来先服务的算法,即先来的请求先被响应。
FCFS算法看起来是比较合理的算法,但是当请求频率过高的时候FCFS算法的响应时间就会大大的延长,这也是最基本的算法,直接实现的是由输入的顺序来顺序的执行。
2.2.4FCFS算法流程图
开始
输入总的磁道数
输入提出磁盘I/O申请的进程数
输入磁道序列(以0结束)
输入开始的磁道号
输出磁盘请求序列和扫描序列
求移动的总的磁道数
求平均寻道长度
结束
图2FCFS算法流程图
3系统实现
1)开发环境:
Window7
2)开发工具和编程语言
开发工具:
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
#include
#include
#include
usingnamespacestd;
#definemaxsize100//定义最大数组域
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;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课程设计 磁盘 调度 先来先 服务 算法 完整版