广工操作系统课程设计.docx_第1页
广工操作系统课程设计.docx_第2页
广工操作系统课程设计.docx_第3页
广工操作系统课程设计.docx_第4页
广工操作系统课程设计.docx_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

操作系统课程设计题目名称 仿真各种磁盘调度算法 学 院 计算机学院 专 业 软件工程 班 别 12级4班 学 号 3112006291 姓 名 林炳城 指导教师 丁国芳 2015年 6 月 27 日仿真各种磁盘调度算法,并进行性能分析一、设计目的 设计四个算法,分别是先来先服务算法,最短寻道时间优先算法,扫描(SCAN)算法,循环扫描(CSCAN)算法。由人工输入当前的磁道数和要访问的磁道。2、 设计原理先来先服务算法(FCFS):公平,简单,每个进程的请求都能依次得到处理。没有对寻道优化,平均寻道时间长。最短寻道时间优先算法(SSTF):要求访问的磁道是当前磁头所在的磁道最近,每次寻道时间最短,但不能保证平均寻道时间最短。可能导致一些请求无限期推延,产生饥饿现象。扫描算法(SCAN):不仅考虑当前磁道的距离,优先考虑在磁道前进方向的最短时间,排除磁头在盘面上的往复运动,避免了出现“饥饿”现象。电梯原理。循环扫描算法(CSCAN):是SCAN的改良。磁头改变方向时,以到达请求服务的最短时间。对中间请求服务更有利,同时消除了对两端请求的不公平。三、实验环境与工具(1)计算机及操作系统:PC机,Win8.1(2)程序设计语言:java(3)编译程序:eclipse四、算法流程图最短寻道时间优先算法(SSTF)先来先服务算法(FCFS):循环扫描(CSCAN)算法扫描算法(SCAN):五、测试程序结果:测试数据:访问磁道一20访问磁道二50访问磁道三30当前的磁道数40一次输入要访问的磁道数以及当前的磁道数选择一:先来先服务算法(FCFS):得到的访问顺序以及平均寻道长度为选择二:最短寻道时间优先(SSTF)得到的访问顺序以及平均寻道长度为选择三:扫描算法(SCAN):分别采用移动臂向里和移动臂向外,得到的访问顺序以及平均寻道长度为选择四:循环扫描算法(SCAN):分别采用由里向外和由外向里都得到的结果。由里向外由外向里6、 性能分析:从测试结果得到的访问顺序与预期的结果一致,并且经计算从中求出移动距离以及平均寻道长度都正确,符合要求。这次课设我是用数组来实现的。从实验的结果得到的数据中也可以看出,光是访问三次磁道,得到的平均磁道数就各不相同,当用户访问的磁道次数频繁且不一致时,好的磁道访问算法才能加快磁道访问的速度。7、 课设感想从这次课程设计中学到了磁盘的调度算法,以及如何利用各个算法来各种需求的功能,锻炼了自己的编码能力,觉得自己受益良多8、 附录:(源码以及详细注释)/* * 先来先服务算法 * author LinBingcheng * */public class FCFS public static void execate(int a, int n, int k) / int i, s, sum = 0;int b = new int100;for (i = 0; i n; i+)/ 将数组a内容复制到另一个数组存放bi = ai;s = k; / k表示当前的磁道for (i = 0; i n; i+) System.out.println(第 + i + 1 + 次访问的道数: + bi + = 移动距离:+ Math.abs(s - bi);sum += Math.abs(s - bi); / Math.abs函数取绝对值,再求和s = ai;System.out.println(平均寻道长度为: + sum * 1.0 / n);System.out.println();System.out.println(=);System.out.println();/* * 最短寻道优先算法 * author LinBingcheng * */public class SSTF public static void execate(int a, int n, int k) / int i, j, sum = 0, p, s;int b = new int100;for (i = 0; i = 0; i-) / 找出与磁头最近的磁道号s = b0;p = 0;for (j = 0; j = i; j+)if (Math.abs(k - bj) Math.abs(k - s)/ 求最短的移动距离s = bj;p = j;bp = bi; / 将入已被访问的磁道号的位置转存为未被访问的磁道数System.out.println(第 + new Integer(n - i) + 次访问的道数: + s+ = 移动距离: + Math.abs(k - s);sum += Math.abs(k - s);k = s;/ 记录新的当前磁道的位置System.out.println(平均寻道长度: + sum * 1.0 / n);System.out.println();System.out.println(=);/* * 扫描算法-磁道由里向外 * author LinBingcheng * */public class SCAN1 public static void execate(int a, int n, int k) / int i, j, sum = 0, flag, s, p = 0;int b = new int100;for (i = 0; i = 0; i-) flag = 0;for (j = 0; j 0) flag = 1;p = j;break;if (flag = 1) / 找到比当前磁头所在磁道大且又是距离最近的磁道号,磁臂由里向外移动访问磁道s = bp;for (j = 0; j k & bj - k s - k) s = bj;p = j;bp = bi;System.out.println(第 + new Integer(n - i) + 次访问的道数: + s+ = 移动距离: + Math.abs(k - s);sum += Math.abs(s - k);k = s;/ ifelse / 磁头由里向外访问直至再无更外磁道需要访问,磁臂换向为由外向里移动s = b0;for (j = 0; j = i; j+)if (k - bj = k - s) s = bj;p = j;/ ifbp = bi; / 将未被访问的磁道号移入已被访问的磁道号的位置System.out.println(第 + new Integer(n - i) + 次访问的道数: + s+ = 移动距离: + Math.abs(k - s);sum += Math.abs(s - k);k = s;/ elseSystem.out.println(平均寻道长度: + sum * 1.0 / n);System.out.println();System.out.println(=);/* * 扫描算法-磁道由外向里 * author LinBingcheng * */public class SCAN2 public static void execate(int a, int n, int k) / int i, j, sum = 0, p = 0, s, flag;int b = new int100;for (i = 0; i = 0; i-) flag = 0;for (j = 0; j 0) flag = 1;p = j;break;if (flag = 1) / 找到比当前磁头所在磁道小且又是距离最近的磁道号,磁臂由外向里移动访问磁道s = bp;for (j = 0; j = i; j+)if (bj k & k - bj k - s) s = bj;p = j;bp = bi;System.out.println(第 + new Integer(n - i) + 次访问的道数: + s+ = 移动距离: + Math.abs(k - s);sum += Math.abs(s - k);k = s;else / 磁臂有外向里访问直至再无更内磁道需要访问,磁臂换向为由里向外移动s = b0;for (j = 0; j = i; j+)if (bj - k = s - k) s = bj;p = j;bp = bi; / 将未被访问的磁道号移入已被访问的磁道号的位置System.out.println(第 + new Integer(n - i) + 次访问的道数: + s+ = 移动距离: + Math.abs(k - s);sum += Math.abs(s - k);k = s;System.out.println(平均寻道长度: + sum * 1.0 / n);System.out.println();System.out.println(=);/* * 循环扫描算法 * author LinBingcheng * */import java.util.Scanner;public class CSCAN public static void execate(int a, int n, int k) / SuppressWarnings(resource)Scanner scanner = new Scanner(System.in);int i, j, sum, temp, s, select, flag = 0;int b = new int100;s = k;for (i = 0; i n; i+)/ 将数组a内容复制到另一个数组存放bi = ai;for (i = 0; i n - 1; i+)/ 冒泡法将磁道号由小到大排序for (j = 0; j bj + 1) temp = bj;bj = bj + 1;bj + 1 = temp;System.out.println(1. 移动由里向外);System.out.println(2. 移动由外向里);System.out.println(输入选择);select = scanner.nextInt();if (select = 1) sum = 0;for (i = 0; i n; i+)/ 找到已排序磁道中第一个大于等于当然磁头所在位置的磁道号if (k = bi) flag = i;break;for (i = flag, j = 0; i n; i+, j+) / 磁臂由里向外移动访问System.out.println(第 + j + 1 + 次访问的道数: + bi+ = 移动距离: + Math.abs(k - bi);sum += Math.abs(k - bi);k = bi;for (i = 0; i flag; i+, j+) / 磁臂循环由里向外访问剩余的磁道System.out.println(第 + j + 1 + 次访问的道数: + bi+ = 移动距离: + Math.abs(k - bi);sum += Math.abs(k - bi);k = bi;System.out.println(平均寻道长度:+ sum * 1.0 / n);System.out.println();System.out.println(=);if (select = 2) sum = 0;for (i = 0; i n; i+)/ 找到已排序磁道中第一个大于等于当然磁头所在位置的磁道号if (s = 0; i-, j+) / 磁臂先由外向里移动访问System.out.println(第 + j + 1 + 次访问的道数: + bi+ = 移动距离: + Math.abs(k - bi);sum += Math.abs(s - bi);s = bi;for (i = n - 1; i = flag; i-, j+) / 磁臂循环由外向里访问剩余的磁道System.out.println(第 + j + 1 + 次访问的道数: + bi+ = 移动距离: + Math.abs(k - bi);sum += Math.abs(s - bi);s = bi;System.out.println(平均寻道长度:+sum * 1.0 / n);System.out.println();System.out.println(=);import java.util.Scanner;/* * 主函数 * author LinBingcheng * */public class Main public static void main(String args) Scanner scanner = new Scanner(System.in);System.out.println( |=|); System.out.println( | 操作系统课程设计 |);System.out.println( | 仿真各种磁盘调度算法 |); System.out.println( | 软件工程(4)班 |); System.out.println( | 3112006291 |); System.out.println( | 林炳城 |); System.out.println( |=|); int p,q; int n,i,k; int a = new int100;System.out.println(请输入要访问的磁道次数:);n= scanner.nextInt();for(i=0;in;i+)System.out.println(输入要访问的磁道:+i+1);ai = scanner.nextInt();System.out.println(输入当前磁头所在的磁道号:);k = scanner.nextInt();System.ou

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论