欢迎来到天天文库
浏览记录
ID:40850521
大小:181.00 KB
页数:12页
时间:2019-08-08
《模拟磁盘调度算法的调度过程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、目录1.系统描叙……………………………………………………21.1设计目的…………………………………………………………21.2要求实现的功能…………………………………………………21.3实现的环境及语言………………………………………………22.分析与设计…………………………………………………32.1设计思想…………………………………………………………32.2功能模块部分……………………………………………………32.3关键代码…………………………………………………………42.4测试数据及结果…………………………………………………53.系统
2、测试……………………………………………………53.1进入界面…………………………………………………………53.2先来先服务法……………………………………………………63.3最短寻道时间优先法……………………………………………63.4电梯算法…………………………………………………………74.心得体会……………………………………………………75.参考文献……………………………………………………86.附录(源文件)……………………………………………8121.系统描叙1.1设计目的磁盘是高速、大容量、旋转型、可直接存取的存储设备。它作为计算机
3、系统的辅助存储器,担负着繁重的输入输出工作,在现代计算机系统中往往同时会有若干个要求访问磁盘的输入输出要求。系统可采用一种策略,尽可能按最佳次序执行访问磁盘的请求。由于磁盘访问时间主要受寻道时间T的影响,为此需要采用合适的寻道算法,以降低寻道时间。通过这次设计可以加深我饿每年对磁盘调度算法的进一步认识,加强实践动手能力和程序开发能力的培养,提高分析问题解决问题的能力,培养代码编写能力,以巩固和加深磁盘调度的概念。操作系统是一门工程性很强的课程,它不仅要求学生掌握操作系统的工作原理和理论知识,也要求学生的实际动手能力,以加深对所学习内容
4、的理解,使学生熟练地掌握计算机的操作方法,使用各种软件工具,加强对课程内容的理解。这次课程设计,就是通过模拟磁臂调度来加深对操作系统中磁臂调度概念的理解。1.2要求实现的功能我们要编程序模拟磁盘调度的过程,采用指定算法,模拟并输出存取臂的移动顺序,并计算存取臂移动的磁道总数。设计要求:根据输入当前磁头的位置,磁头移动方向,柱面数等数据,编程序实现下述磁盘调度算法,并求出每种算法的平均寻道长度;要求设计主界面可以灵活选择某算法,且以下算法都要实现1、先来先服务算法(FCFS)2、最短寻道时间优先算法(SSTF)3、电梯算法(SCAN)1
5、.3实现的环境及语言1.集成环境:VisualStudio20102.语言:C#122.分析与设计2.1设计思想1.先来先服务(FCFS)的设计思想即先来的请求先被响应。FCFS策略看起来似乎是相当"公平'的,但是当请求的频率过高的时候FCFS策略的响应时间就会大大延长。FCFS策略为我们建立起一个随机访问机制的模型,但是假如用这个策略反复响应从里到外的请求,那么将会消耗大量的时间。为了尽量降低寻道时间,看来我们需要对等待着的请求进行适当的排序,而不是简单的使用FCFS策略。这个过程就叫做磁盘调度管理。有时候fcfs也被看作是最简单的
6、磁盘调度算法。2.最短寻道时间优先调度(SSTF)的设计思想最短时间优先算法选择这样的进程。要求访问的磁道,与当前磁头所在的磁道距离最近,以使每次的寻道时间最短。3.电梯算法(SCAN)的设计思想该算法不仅考虑到欲访问的磁道与当前磁道间的距离,更优先考虑的是磁头当前的移动方向。例如,当磁头正在自里向外移动时,SCAN算法所考虑的下一个访问对象,应是其欲访问的磁道,既在当前磁道之外,又是距离最近的。这样自里向外的访问,直至再无更外的磁道需要访问时,才将磁道换向自外向里移动。这时,同样也是每次选择这样的进程来调度,也就是要访问的当前位置内
7、距离最近者,这样,磁头又逐步地从外向里移动,直至再无更里面的磁道要访问,从而避免了出现“饥饿”现像。2.2功能模块部分本次课程设计为设计模拟磁盘移臂调度过程,要求采用先来先服务法和最短寻道时间优先算法,电梯算法。本程序包括两大模块:① 用户输入部分12① 处理数据并输出结果部分其中在处理数据中又分为采用先来先服务法、最短寻道时间优先算法及电梯算法,电梯算法又分为从左向右和从右向左。如下图1,即为本次课程设计的功能模块图。2.3关键代码current=int.Parse(textBox1.Text.Trim());direction=C
8、onvert.ToInt32(cmb_direction.SelectedIndex);cylinder=int.Parse(tb_cylinder.Text.Trim());string[]nums=tb_visito
此文档下载收益归作者所有