电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

模拟电梯调度算法实现对磁盘的驱动调度

13页
  • 卖家[上传人]:pu****.1
  • 文档编号:470045367
  • 上传时间:2022-08-28
  • 文档格式:DOCX
  • 文档大小:45.16KB
  • / 13 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、操作系统实验(第三次)一、实验内容模拟电梯调度算法,实现对磁盘的驱动调度。二、实验目的磁盘是一种高速、大容量、旋转型、可直接存取的存储设备。它作为计算机系统的辅助存储器,担负着繁重的输入输出任务、在多道程序设计系统中,往往同时会有若干个要求访问磁盘的输入输出请求等待处理。系统可采用一种策略,尽可能按最佳次序执行要求访问磁盘的诸输入输出请求。这就叫驱动调度,使用的算法称为驱动调度算法。驱动调度能降低为若干个输入输出请求服务所需的总时间,从而提高系统效率。本实验要求学生模拟设计一个驱动调度程序,观察驱动调度程序的动态运行过程。通过实验使学生理解和掌握驱动调度的职能。三、实验题目模拟电梯调度算法,对磁盘进行移臂和旋转调度。提示:(1)磁盘是可供多个进程共享的存储设备,但一个磁盘每时刻只能为一个进程服务。当有进程在访问某个磁盘时,其他想访问该磁盘的进程必须等待,直到磁盘一次工作结束。当有多个进程提出输入输出要求而处于等待状态时,可用电梯调度算法从若干个等待访问者中选择一个进程,让它访问磁盘。选择访问者的工作由“驱动调度”进程来完成。由于磁盘与处理器是可以并行工作的、所以当磁盘在作为一个进程服务

      2、时,占有处理器的另一进程可以提出使用磁盘的要求,也就是说,系统能动态地接收新的输入输出请求。为了模拟这种情况,在本实验中设置了一个“接收请求”进程。“驱动调度”进程和“接收请求”进程能否占有处理器运行,取决于磁盘的结束中断信号和处理器调度策略。在实验中可用随机数来模拟确定这两个进程的运行顺序,以代替中断四、处理和处理器调度选择的过程。因而,程序的结构可参考图31(2) “接收请求”进程建立一张“请求I/O”表,指出访问磁盘的进程要求访问的物理地址,表的格式为:假定某个磁盘组共有200个柱面,由外向里顺序编号(0199),每个柱面上有20个磁道,编号为019,每个磁道分成8个物理记录,编号07。进程访问磁盘的物理地址可以用键盘输入的方法模拟得到。图32是“接收请求”进程的模拟算法。在实际的系统中必须把等待访问磁盘的进程排入等待列队,由于本实验模拟驱动调度,为简单起见,在实验中可免去队列管理部分,故设计程序时可不考虑“进程排入等待队列”的工作。(3) “驱动调度”进程的功能是查“请求I/O”表,当有等待访问磁盘的进程时,按电梯调度算法从中选择一个等待访问者,按该进程指定的磁盘物理地址启动磁

      3、盘为其服务。对移动臂磁盘来说,驱动调度分移臂调度和旋转调度。电梯调度算法的调度策略是与移动臂的移动方向和移动臂的当前位子有关的,所以每次启动磁盘时都应登记移动臂方向和当前位子。电梯调度算法是一种简单而实用的驱动调度方法,这种调度策略总是优先选择与当前柱面号相同的访问请求,从这些请求中再选择一个能使旋转距离最短的等待访问者。如果没有与当前柱面号相同的访问请求,则根据移臂方向来选择,每次总是沿臂移动方向选择一个与当前柱面号最近的访问请求,若沿这个方向没有访问请求时,就改变臂的移动方向。这种调度策略能使移动臂的移动频率极小,从而提高系统效率。用电梯调度算法实现驱动调度的模拟算法如图33。(4) 4)图31中的初始化工作包括,初始化“请求I/O”表,置当前移臂方向为里移;置当前位置为0号柱面,0号物理记录。程序运行前可假定“请求I/O”表中已经有如干个进程等待访问磁盘。“请在模拟实验中,当选中一个进程可以访问磁盘时,并不实际地启动磁盘,而用显示:求I/O”表;当前移臂方向;当前柱面号,物理记录号来代替图33中的“启动磁盘”这项工作。(1)程序中使用的数据结构及其说明。constintPCB=1

      4、00;定义100个进程intpcbs_num=0;/记录当前io表的进程个数typedefstructprocess/请求io表charpname10;/进程名intCylinder;/柱面号intTrack;/磁道号intRecord;/物理记录号intWay;PROCESS;PROCESSpcbsPCB;PROCESSa;/记录当前位置(柱面号、物理记录号)采用带头节点的循环链表存(2)打印一份源程序并附上注释。(3) #include(4) #include(5) #include(6) #include#include(8) usingnamespacestd;(9) constintPCB=100;/定义100个进程(10) intpcbs_num=0;记录当前io表的进程个数(11) typedefstructprocess/请求io表(12) (13) charpname10;/进程名(14) intCylinder;/柱面号(15) intTrack;/磁道号(16) intRecord;/物理记录号(17) intWay;(18) PROCESS(19) PROCES

      5、pcbsPCB;(20) PROCESS(21) voidinit_a()/设置当前位置(22) (23) a.Cylinder=4;(24) a.Track=0;(25) a.Record=0;(26) (27) intcount_PN()/记录进程总数(28) (29) inti;NULL i+)(30) for(i=0;pcbsi.Cylinder!=(31) (32) (33) coutiendl;(34) returni;(#) (36) voidaccept()/接受请求模拟算法(37) (38) cout输入进程名和物理地址(柱面号,磁道号,物理记录号)pcbspcbs_num.pnamepcbspcbs_num.Cylinderpcbspcbs_num.Trackpcbspcbs_num.Record;(40) pcbs_num+;(41) (42) intCylinder_e()/判断柱面号相等(43) (44) for(inti=0;ipcbs_num;i+)(45) (46) if(pcbsi.Cylinder=a.Cylinder)(47) returni;(4

      6、8) (49) return0;(50) (51) intCylinder_near(intcylinder,intrecord)/选择当前柱面号的访问者中物理块号最近的(52) (53) intt=8,a,k;(54) for(inti=0;ipcbs_num;i+)(55) (56) if(pcbsi.Cylinder=cylinder)(57) (58) a=pcbsi.Record-record;(59) if(a0)a=a+8;(60) if(at)(61) (62) t=a;k=i;(63) (64) (65) (66) returnk;(67) (68) intCylinder_max(intcylinder)/选择比当前柱面号大的请求中柱面号最小的(69) (70) intnum,t=199,i,a=0,b=0;(71) for(i=0;ipcbs_num;i+)(72) (73) if(abs(pcbsi.Cylinder-cylinder)cylinder)(74) (75) t=abs(pcbsi.Cylinder-cylinder);(76) (77) num=

      7、cylinder+t;/选择的柱面号(78) t=8;/物理块号最大相差7(79) for(i=0;ipcbs_num;i+)(80) (81) if(pcbsi.Cylinder=num&pcbsi.Recordt)(82) (83) t=pcbsi.Record;a=i;(#)(85) (86) returna;(87) (88) intCylinder_max1(intcylinder)(89) (90) intt=199,i,b=0,c=0;(91) for(i=0;ib&pcbsi.Cylindercylinder)(94) (95) b=abs(pcbsi.Cylinder-cylinder);(96) (97) (98) returnb;(99) (100) intCylinder_min(intcylinder)/选择比当前柱面号小的请求中柱面号最大的(101) (102) intnum,t=199,i,a=0;for(i=0;ipcbs_num;i+)(103) (104) if(abs(pcbsi.Cylinder-cylinder)t&pcbsi.Cylinder

      8、cylinder)(105) (106) t=abs(pcbsi.Cylinder-cylinder);(107) (108) (109) num=cylinder-t;t=8;/物理块号相差最大为7(110) for(i=0;ipcbs_num;i+)(111) (112) if(pcbsi.Cylinder=num&pcbsi.Recordt)(113) (114) t=pcbsi.Record;a=i;(115) (116) (117) returna;/返回柱面号小的请求中柱面号最大的下标(118) (119) voiddelete_scan(intx)(120) (121) for(inti=x;ipcbs_num;i+)(122) pcbsi=pcbsi+1;pcbs_num-;(123) (124) voidprint_io()/打印请求io表(125) (126) cout输出请求i/o表:endl;(127) cout进程名柱面号磁道号物理记录号endl;(128) for(inti=0;ipcbs_num;i+)(129) (130) coutsetfill()setw(6)pcbsi.pnamesetfill()setw(8)pcbsi.Cylindersetfill()setw(8)pcbsi.Tracksetfill()setw(10)pcbsi.Recordendl;(131) (132) (133) voidprint_scan(boolx)(134) (135) cout选中的:endl;cout

      《模拟电梯调度算法实现对磁盘的驱动调度》由会员pu****.1分享,可在线阅读,更多相关《模拟电梯调度算法实现对磁盘的驱动调度》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.