磁盘调度课程设计.doc

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
磁盘调度课程设计

目 录 1. 操作系统课程设计任务描述 2 2.问题定义与需求分析 2 2.1算法的描述 2 2.2程序要做什么 3 3.概要设计 4 4.详细设计 5 4.1抽象数据类型的定义 5 4.2程序流程图以及核心代码 5 4.2.1先来先服务调度算法 5 4.2.2最短寻道时间优先调度算法 6 4.2.3扫描算法 8 4.2.4循环扫描算法 10 5运行结果 12 6测试 15 7结论 16 8参考文献 17 9附录(源代码) 17 操作系统课程设计任务描述 设计目的:加深对的进一步认识,加强实践动手能力和程序开发能力的培养,提高分析问题解决问题的能力,培养,以巩固和加深磁盘调度的概念。操作系统是一门工程性很强的课程,它不仅要求学生掌握操作系统的工作原理和理论知识,也要求学生的实际动手能力,以加深对所学习内容的理解,使学生熟练地掌握计算机的操作方法,使用各种软件工具,加强对课程内容的理解。这次课程设计,就是通过模拟磁臂调度来加深对操作系统中磁臂调度概念的理解FCFS) 2、最短寻道时间优先算法(SSTF) 3、扫描算法(SCAN) 4、循环扫描算法(CSCAN) 2.问题定义与需求分析 2.1算法的描述程序要做什么 FCFS) 2、最短寻道时间优先算法(SSTF) 3、扫描算法(SCAN) 4、循环扫描算法(CSCAN) (1)输入的形式和范围:输入为数字类型 (2)输出形式:数组和字符串 (3)程序的功能:实现磁盘调度算法的演示 (4)测试数据: 正确的输入:合法的整数类型. 期望输出:正确输出结果 错误的输入:字符型,浮点数型 期望输出:提示错误 (5)开发环境及语言的选择 Visual studio 2010 C#语言 即先来的请求先被响应。策略看起来似乎是相当公平的,但是当请求的频率过高的时候策略的响应时间就会大大延长。策略为我们建立起一个随机访问机制的模型,但是假如用这个策略反复响应从里到外的请求,那么将会消耗大量的时间。为了尽量降低寻道时间,看来我们需要对等待着的请求进行适当的排序,而不是简单的使用策略。这个过程就叫做磁盘调度管理。有时候fcfs也被看作是最简单的磁盘调度算法最短时间优先算法选择这样的进程。要求访问的磁道,与当前磁头所在的磁道距离最近,以使每次的寻道时间最短。扫描()调度算法:该算法不仅考虑到欲访问 的磁道与当前磁道间的距离,优先考虑的是磁头当前的移动方向。例如,当磁头正在自里向外移动时,算法所考虑的下一个访问对象,应是其欲访问的磁道,既在当前磁道之外,又是距离最近的。这样自里向外的访问,直至再无更外的磁道需要访问时,才将磁道换向自外向里移动。这时,同样也是每次选择这样的进程来调度,也就是要访问的当前位置内距离最近者,这样,磁头又逐步地从外向里移动,直至再无更里面的磁道要访问,从而避免了出现“饥饿”现像。循环扫描()算法:当磁头刚从里向外移动而越过了某一磁道时,恰好又有一进程请求访问此磁道,这时,该里程就必须等待,为了减少这种延迟,算法规定磁头单向移动,而本实验过程中我们所设计的是磁头从里向外移动,而从外向里移动时只须改方向而已,本实验未实现。但本实验已完全能演示循环扫描的全过程。 抽象数据类型的定义 核心代码如下: for (int i = 0; i array.Length;i++ )//输出数组到listbox1 { listBox1.Items.Add(array[i]); } num3 = Convert.ToInt32(textBox3.Text); int[] remove=new int[array.Length]; //申明动态数组保存移动距离 remove[0] = Math.Abs(num3-array[0]); sum += remove[0]; for (int i = 1; i array.Length;i++ )//计算移动距离保存到数组中 { remove[i] = Math.Abs(array[i]-array[i-1]); sum += remove[i]; } 核心代码如下: while (array[k] num3) //确定当前磁道在已排的序列中的位置 { k++; } p

文档评论(0)

asd522513656 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档