操作系统课程设计-磁盘调度算法.doc
《操作系统课程设计-磁盘调度算法.doc》由会员分享,可在线阅读,更多相关《操作系统课程设计-磁盘调度算法.doc(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品文档,仅供学习与交流,如有侵权请联系网站删除目 录1 课程设计目的及要求12 相关知识13 题目分析24 概要设计2 4.1 先来先服务(FCFS)的设计思想.2 4.2 最短寻道时间优先调度(SSTF)的设计思想.2 4.3 扫描算法(SCAN)的设计思想2 4.4 循环扫描(CSCAN)的设计思想.25 代码及流程3 5.1 流程图.3 5.2 源代码.86 运行结果167 设计心得19参考文献19【精品文档】第 9 页1 课程设计目的及要求设计目的:加深对操作系统原理的进一步认识,加强实践动手能力和程序开发能力的培养,提高分析问题解决问题的能力,培养合作精神,以巩固和加深磁盘调度的概
2、念。操作系统是一门工程性很强的课程,它不仅要求学生掌握操作系统的工作原理和理论知识,也要求学生的实际动手能力,以加深对所学习内容的理解,使学生熟练地掌握计算机的操作方法,使用各种软件工具,加强对课程内容的理解。这次课程设计,就是通过模拟磁臂调度来加深对操作系统中磁臂调度概念的理解。使学生熟悉磁盘管理系统的设计方法;加深对所学各种磁盘调度算法的了解及其算法的特点。设计要求:编程序实现下述磁盘调度算法,并求出每种算法的平均寻道长度;要求设计主界面可以灵活选择某算法,且以下算法都要实现1、先来先服务算法(FCFS)2、最短寻道时间优先算法(SSTF)3、扫描算法(SCAN)4、循环扫描算法(CSCA
3、N)2 相关知识数据结构:数组now:当前磁道号;array:放置磁道号的数组;void FCFS(int array,int m )先来先服务算法(FCFS)void SSTF(int array,int m)最短寻道时间优先算法(SSTF)void SCAN(int array,int m) 扫描算法(SCAN)void CSCAN(int array,int m)循环扫描算法(CSCAN) 磁盘调度:当有多个进程都请求访问磁盘时,采用一种适当的驱动调度算法,使各进程对磁盘的平均访问(主要是寻道)时间最小。目前常用的磁盘调度算法有:1)闲来先服务2)最短寻道时间优先3)扫描算法4)循环扫描
4、算法等3 题目分析选择一个自己熟悉的计算机系统和程序设计语言模拟操作系统基本功能的设计方法及其实现过程 完成各分项功能。在算法的实现过程中,要求可决定变量应是动态可变的;同时模块应该有一个合理的输出结果。具体可参照实验的程序模拟 .各功能程序要求自行编写程序实现,不得调用现有操作系统提供的模块或功能函数。磁盘调度程序模拟。先来先服务调度算法. 最短寻道时间优先调度,循环(SCAN)调度算法。程序设计语言自选,最终以软件(含源代码以及执行程序)和设计报告的形式提交课程设计结果.。磁盘调度让有限的资源发挥更大的作用。在多道程序设计的计算机系统中,各个进程可能会不断提出不同的对磁盘进行读/写操作的请
5、求。由于有时候这些进程的发送请求的速度比磁盘响应的还要快,因此我们有必要为每个磁盘设备建立一个等待队列。4 概要设计1.先来先服务(FCFS)的设计思想即先来的请求先被响应。FCFS策略看起来似乎是相当公平的,但是当请求的频率过高的时候FCFS策略的响应时间就会大大延长。FCFS策略为我们建立起一个随机访问机制的模型,但是假如用这个策略反复响应从里到外的请求,那么将会消耗大量的时间。为了尽量降低寻道时间,看来我们需要对等待着的请求进行适当的排序,而不是简单的使用FCFS策略。这个过程就叫做磁盘调度管理。有时候fcfs也被看作是最简单的磁盘调度算法。2.最短寻道时间优先调度(SSTF)的设计思想
6、最短时间优先算法选择这样的进程。要求访问的磁道,与当前磁头所在的磁道距离最近,以使每次的寻道时间最短。3.扫描算法(SCAN)的设计思想扫描(SCAN)调度算法:该算法不仅考虑到欲访问 的磁道与当前磁道间的距离,更优先考虑的是磁头当前的移动方向。例如,当磁头正在自里向外移动时,SCAN算法所考虑的下一个访问对象,应是其欲访问的磁道,既在当前磁道之外,又是距离最近的。这样自里向外的访问,直至再无更外的磁道需要访问时,才将磁道换向自外向里移动。这时,同样也是每次选择这样的进程来调度,也就是要访问的当前位置内距离最近者,这样,磁头又逐步地从外向里移动,直至再无更里面的磁道要访问,从而避免了出现“饥饿
7、”现像。4.循环扫描(CSACN)的设计思想循环扫描(CSCAN)算法:当磁头刚从里向外移动而越过了某一磁道时,恰好又有一进程请求访问此磁道,这时,该里程就必须等待,为了减少这种延迟,CSCAN算法规定磁头单向移动,而本实验过程中我们所设计的是磁头从里向外移动,而从外向里移动时只须改方向而已,本实验未实现。但本实验已完全能演示循环扫描的全过程。5 代码及流程1.先来先服务(FCFS)图 11 FCFS的流程图2.最短寻道时间优先调度(SSTF) 图12 SSTF的流程图3.扫描算法(SCAN) 图13 SCAN的流程图 4.循环扫描(CSCAN)图14 CSCAN的流程图 图15 主函数的流程
8、图源代码:#includestdio.h#includestdlib.h/#includeiostream.h#define maxsize 100 /定义最大数组域/先来先服务调度算法void FCFS(int array,int m)int sum=0,j,i;int avg;printf(n FCFS调度结果: );for(i=0;im;i+)/输出FCFS磁盘调度结果printf(%d ,arrayi);for(i=0,j=1;jm;i+,j+)sum+=abs(arrayj-arrayi);/累计总的移动距离avg=sum/(m-1);/计算平均寻道长度printf(n 移动的总道数
9、: %d n,sum);printf( 平均寻道长度: %d n,avg);/最短寻道时间优先调度算法void SSTF(int array,int m)int temp;int k=1;int now,l,r;int i,j,sum=0;int avg;for(i=0;im;i+)for(j=i+1;jarrayj)/两磁道号之间比较temp=arrayi;arrayi=arrayj;arrayj=temp;for( i=0;im;i+)/输出排序后的磁道号数组printf(%d ,arrayi);printf(n 请输入当前的磁道号:);scanf(%d,&now);printf(n SS
10、TF调度结果: );if(arraym-1=0;i-)/将数组磁道号从大到小输出printf(%d ,arrayi);sum=now-array0;/计算移动距离else if(array0=now)/判断整个数组里的数是否都大于当前磁道号for(i=0;im;i+)/将磁道号从小到大输出printf(%d ,arrayi);sum=arraym-1-now;/计算移动距离elsewhile(arrayk=0)&(rm)if(now-arrayl)=(arrayr-now)/判断最短距离printf(%d ,arrayl);sum+=now-arrayl;/计算移动距离now=arrayl;l
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课程设计 磁盘 调度 算法
限制150内