ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:211.40KB ,
资源ID:16507850      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16507850.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(操作系统课设报告磁盘调度算法Word文件下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

操作系统课设报告磁盘调度算法Word文件下载.docx

1、编程序实现下述磁盘调度算法,并求出每种算法的平均寻道长度;要求设计主界面可以灵活选择某算法,且以下算法都要实现 1、先来先服务算法(FCFS) 2、最短寻道时间优先算法(SSTF) 3、扫描算法(SCAN) 4、循环扫描算法(CSCAN)2.2.实验原理模拟电梯调度算法,对磁盘调度。磁盘是要供多个进程共享的存储设备,但一个磁盘每个时刻只能为一个进程服务。当有进程在访问某个磁盘时,其他想访问该磁盘的进程必须等待,直到磁盘一次工作结束。当有多个进程提出输入输出请求处于等待状态,可用电梯调度算法从若干个等待访问者中选择一个进程,让它访问磁盘。当存取臂仅需移到一个方向最远的所请求的柱面后,如果没有访问

2、请求了,存取臂就改变方向。三、总体设计及分类简介3.1算法介绍磁盘调度中常用的有四种算法,功能分别如下:1.先来先服务(FCFS)算法。即先来的请求先被响应。FCFS策略看起来似乎是相当公平的,但是当请求的频率过高的时候FCFS策略的响应时间就会大大延长。FCFS策略为我们建立起一个随机访问机制的模型,但是假如用这个策略反复响应从里到外的请求,那么将会消耗大量的时间。为了尽量降低寻道时间,看来我们需要对等待着的请求进行适当的排序,而不是简单的使用FCFS策略。这个过程就叫做磁盘调度管理。有时候FCFS也被看作是最简单的磁盘调度算法。2.最短寻道时间优先(SSTF)算法。 要求访问的磁道,与当前

3、磁头所在的磁道距离最近,以使每次的寻道时间最短。3.扫描调度(SCAN)算法。 该算法不仅考虑到欲访问的磁道与当前磁道间的距离,更优先考虑的是磁头当前的移动方向。例如,当磁头正在自里向外移动时,SCAN算法所考虑的下一个访问对象,应是其欲访问的磁道,既在当前磁道之外,又是距离最近的。这样自里向外的访问,直至再无更外的磁道需要访问时,才将磁道换向自外向里移动。这时,同样也是每次选择这样的进程来调度,也就是要访问的当前位置内距离最近者,这样,磁头又逐步地从外向里移动,直至再无更里面的磁道要访问,从而避免了出现“饥饿”现像。4.循环扫描(C-SCAN)算法。当磁头刚从里向外移动而越过了某一磁道时,恰

4、好又有一进程请求访问此磁道,这时,该里程就必须等待,为了减少这种延迟,CSCAN算法规定磁头单向移动,而本实验过程中我们所设计的是磁头从里向外移动,而从外向里移动时只须改方向而已,本实验未实现。但本实验已完全能演示循环扫描的全过程。3.2 详细设计3.2.1功能模块设计 (1)先来先服务算法(FCFS) 3.3 环境要求软件要求:Microsoft Visual Stdio4、程序运行测试 首先输入九个磁道名称以及要访问的磁道号和当前磁道号选择要执行的算法:2.先来先服务算法(FCFS) 3.最短寻道时间优先算法(SSTF) 继续调度其他算法,选择是1,选择扫描算法(SCAN)24.扫描算法(

5、SCAN)5.循环扫描算法(CSCAN)附:代码#include stdafx.h#include math.h#define process_Num 9using namespace std;struct Track int current_Tracknum = 0; /当前磁道号 int next_Track=0; /被访问的下一个磁道号 int move_Distance=0; /移动距离 char process_Name; ;Track trackprocess_Num;float track_aveLength=0; /平均寻道长度int now_Tracknum=0; /最初开始

6、磁道号int select_num = 0;int count_Num=0; /调度算法次数void Scanf_data() printf(请输入要访问磁盘的进程:n); for (int i = 0; i tracki.process_Name; 请输入当前的磁道号: scanf_s(%d, &now_Tracknum);请输入进程要访问的磁道号: i+) scanf_s(tracki.next_Track); void Select()请选择磁盘调度算法:1.先来先服务算法(FCFS)n2.最短寻道时间优先算法(SSTF)n3.扫描算法(SCAN)n4.循环算法(CSCAN)nselec

7、t_num);void Print() /打印访问磁盘顺序进程访问磁盘的先后顺序: i+) printf(%c, tracki.process_Name);%d, tracki.next_Track);void Print_Data()打印表格ntt从%d#磁道开始n, now_Tracknum);t磁道名t磁道号t 移动距离n i+) printf( t%ct %dt %dn, tracki.process_Name, tracki.next_Track, tracki.move_Distance); t平均寻道长度为:%.2fn, track_aveLength); nvoid Count

8、_data() int nownum = 0; /当前计算次数 if (nownum = 0) tracki.move_Distance = abs(now_Tracknum - tracki.next_Track); tracki.current_Tracknum = tracki.next_Track; nownum+; else tracki.move_Distance = abs(tracki.next_Track - tracki - 1.current_Tracknum); int sum = 0; /计算平均寻道长度时需要的总和每次磁头移动距离为: / printf(, trac

9、ki.move_Distance); cout tracki.move_Distance ; sum = sum + tracki.move_Distance; track_aveLength = (float)sum / process_Num;平均寻道长度为:%.2f, track_aveLength);void FCFS() count_Num+;按进程提出请求的先后次序进行排队n Print(); Count_data(); Print_Data();void SSTF() count_Num+; int nownum = 0; int x10; int xtemp = 0; int

10、tempint; /冒泡排序时需要的临时int型变量(对进程访问磁道号进行排序) int tempchar; /冒泡排序时需要的临时char型变量(对进程名进行排序)按进程访问磁道与当前磁头所在的磁道距离进行排队n for (int i = 0; i+) xi = now_Tracknum - tracki.next_Track; process_Num - 1; for (int j = 0; j 0) & (xj + 1 (xjxj + 1) | (xj 0) xtemp = xj; xj = xj + 1; xj + 1 = xtemp; tempint = trackj.next_Tr

11、ack; trackj.next_Track = trackj + 1.next_Track; trackj + 1.next_Track = tempint; tempchar = trackj.process_Name; trackj.process_Name = trackj + 1.process_Name; trackj + 1.process_Name = tempchar; if (xj xj + 1 x2) xtemp = xj; xj = xj + 1; xj + 1 = xtemp; tempint = trackj.next_Track; trackj.next_Trac

12、k = trackj + 1.next_Track; trackj + 1.next_Track = tempint; tempchar = trackj.process_Name; trackj.process_Name = trackj + 1.process_Name; trackj + 1.process_Name = tempchar; else continue; void SCAN() int x10; int xtemp = 0; int tempint; int tempchar;SCAN算法按磁头当前的移动方向和进程访问磁道与当前磁头所在的磁道距离进行排队n for (in

13、t j = 0; if (xjxj + 1) | (xj xtemp = xj; xj = xj + 1; xj + 1 = xtemp; tempint = trackj.next_Track; trackj.next_Track = trackj + 1.next_Track; trackj + 1.next_Track = tempint; tempchar = trackj.process_Name; trackj.process_Name = trackj + 1.process_Name; trackj + 1.process_Name = tempchar; if (xj els

14、e continue; Count_data(); void CSCAN() i+) xi = now_Tracknum - tracki.next_Track; i+) (xj count_Num 4)是否继续调度其他算法? 是 1 否 2 scanf_s(a); if (a = 1) Select(); if (select_num = 1) FCFS(); if (select_num = 2) SSTF(); if (select_num = 3) SCAN(); if (select_num = 4) CSCAN(); else exit(0);四种算法已全部执行完毕! return 0;THANKS !致力为企业和个人提供合同协议,策划案计划书,学习课件等等打造全网一站式需求欢迎您的下载,资料仅供参考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1