首页 电梯调度算法

电梯调度算法

举报
开通vip

电梯调度算法湖北师范学院《操作系统》实验报告学生学号:2011115010820学生班级:1108学生姓名:汤凯指导老师:李晓瑾完成时间:2013年12月28号实验三驱动调度实验内容模拟电梯调度算法,实现对磁盘的驱动调度。实验目的磁盘是一种高速、人容量、旋转型、可直接存取的存储设备。它作为计算机系统的辅助存储器,担负着繁重的输入输出任务,在多道程序设计系统中,往往同时会有若干个要求访问磁盘的输入输出请求等待处理。系统可采用一种策略,尽可能按最佳次序执行要求访问磁盘的诸输入输出请求,这就叫驱动调度,使用的算法称驱动调度算法。驱动...

电梯调度算法
湖北师范学院《操作系统》实验报告学生学号:2011115010820学生班级:1108学生姓名:汤凯指导老师:李晓瑾完成时间:2013年12月28号实验三驱动调度实验内容模拟电梯调度算法,实现对磁盘的驱动调度。实验目的磁盘是一种高速、人容量、旋转型、可直接存取的存储设备。它作为计算机系统的辅助存储器,担负着繁重的输入输出任务,在多道程序设计系统中,往往同时会有若干个要求访问磁盘的输入输出请求等待处理。系统可采用一种策略,尽可能按最佳次序执行要求访问磁盘的诸输入输出请求,这就叫驱动调度,使用的算法称驱动调度算法。驱动调度能降低为若干个输入输出请求服务所需的总时间,从而提高系统效率。本实验模拟设计一个驱动调度程序,观察驱动调度程序的动态运行过程。实验题目模拟电梯调度算法,对磁盘进行移臂调度和旋转调度。数据结构及其说明:constmtPCB=100;//定义100个进程iiitpcbs_num=0;〃记录当前10 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 的进程个数tvpedefstmctprocess〃请求io表{cliai-pname[10];〃进程名intCylinder;〃柱面号intTrack;〃磁道号intRecord;〃物理记录号intWay;}PROCESS;PROCESSpcbs[PCB];PROCESSa;//记录当前位置(柱面号、物理记录号)采用带头节点的循坏链表存源程序并附上注释:publicclassDiskDispatcliAiithinetic{publicstaticAiiayListlist=newAiravList();//io表publicstaticAnayListwaitlist=newAiTayList();//输入的值不符合时,临时存入此表staticStringcourse="Null"#定义静态值存放进程名staticintcylinder=0;//定义静态值存放柱面位置staticinttrack=0;〃定义静态值存放磁道位置staticintrecord=0;//定义静态值存放物理记录位置staticStringside="up";//定义静态值存放当前摆臂方向,初始为upBufieredReaderstieanun=newBufferedReader(newInputStreaniReader(System.m));publicvoidisBigger(){//通过随机数比较,确定I、•一步执行何种操作DiskDispatcliAiitlmieticds=newDiskDispatcliAiitlunetic();Scannersc=newScaiiner(System.in);System.out.prmtlii(n输入随机数:”);//doublei=Math.random();//inti=1;//inti=0;inti=sc.nextliit();if(list.isEmpty()&&waitlist.isEmptyO){System.out.prmtln("当前io表为空,等待输入”);ds.toContiiiue();}else{if(i>=0.5){System.out.println(,,|®机数为”+i+"大于0.5,执行驱动调度”);ds.Scheduling();}else{System.out.println(,,|®机数为”+i+”小于0.5,执行接受请求”);ds.Request();}}}publicbooleanisHave(inta,intb.iiitc){AiravListlist!=(AiravList)list.clone();intflag=0;for(inti=0;icylinder){if(io.getTrackQ>tiack){if(lo.getRecordQ>record){waitlist.add(io);}}}else{list.add(io);}}toContinue();}publicvoidfiistRequestQ{//初始化io表元素ioio=newio();Seamiersc=newScaiiner(System.in);System.out.pnn血(”输入进程名柱面号磁道号物理记录号”);io.setCouise(sc.next());10.setCylinder(sc.nextlnt());10.setTrack(sc.nextliitQ);10.setRecord(sc.nexthitQ);list.add(io);}publicvoidSchedulmgO{AiravListlist!=(AiravList)list.clone();AiravListlist2=(AiravList)list.clone();intfcylinder=cylinder;//当前所在的柱面nitftrack=track;//当前所在的磁道intfreeord=record;//当前所在的物理记录if("upH.equals(side)){//:判断side方向为up时执行Compaiatorlocomparator=newComparatorlo();Collections.soit(list1,compaiator)y/调用从小到人排序进行排序System.out.piiiitln(M当前io表:System.out.prmtlnC,进程名”+””+”柱面号”+H••+■磁道号”+”••+"物理记录号”);for(inti=0;iio.getCylinder()){if(ftrack>io.getTrack()){if(fiecord>io.getRecord()){P=i;}}}}if(p==0&&list.size()>=1){//若找到比当前值小的元素,进行list表中对应元素的删除并继续ioio=(io)listl.get(p);mta,b,c;a=io.getCylinderQ-cylinder;b=io.getTrackQ-track;c=io.getRecordQ-record;System.out.printlnC,当前所指向进程:”);System.out.println(,,ifi程名”+”"+“柱面号”+””+”磁道号”+””+”物理记录号”);System.out.println(couise+""+cylinder+""+track+""+record);if(a!=0){//若比较得到当前柱面号与下一个准备操作进程柱面号不同,则按照side方向寻找适合值System.out.println(H即将调度的进度不在此柱面号中,按照"+side+"方向寻找适配进度”);}if(a—0&&b!=0){//若比较得到当前磁道号与下一个准备操作进程磁道号不同,则按照side方向寻找适合值System.out.pnntln(^P将调度的进度在此柱面号中,但是不在此磁道号中,按照”+sid亡+”方向寻找适配进度”);}if(a=0&b=0&c!=0){〃仅物理记录号变化时,按照side方向寻找适合值System.out.pnntln(^P将调度的进度在此柱面号,磁道号中,但是不在此物理记录号中,按照”+side+”方向寻找适配进度”);}course=io.getCourse();cylinder=io.getCylinder();track=io.getTiackQ;record=lo.getRecordQ;System,out.println("将要调度的进程:”);System.out.pnntln(H进程名”+”••+”柱面号”+H••+”磁道号”+””+”物理记录号”);System.out.prmtln(couise+H”+cylinder+H”+track+”'*+record);System.out.println(H当前摆臂方向不变,为"+side);list.Temove(io);//删除当前所指向io表元素}elseif(list.isEmptyO){//list表为空,则改变side指向为downSystem.out.printlnf,当前所指向进程:”);System.out.prmtln(cylmder+””+track+””+record);side=ndownn;System.out.pnntln("由于没有比当前所指向进程更人的进程,移动方向改变,为*+side);for(inti=0;i=1){ioio=(io)listl.get(p);mta,b,c;a=io.getCylinderQ-cylinder;b=io.getTrackQ-track;c=io.getRecordQ-record;if(a!=0){System.out.println(H即将调度的进度不在此柱面号中,按照"+side+"方向寻找适配进度”);}if(a=0&&b!=0){System.out.pnntln(^P将调度的进度在此柱面号中,但是不在此磁道号中,按照”+side+”方向寻找适配进度”);}if(a=0&b=0&c!=0){System.out.pnntln(^P将调度的进度在此柱面号,磁道号中,但是不在此物理记录号中,按照”+side+”方向寻找适配进度”);}course=io.getCourse();cylinder=io.getCylinder();track=io.getTrackQ;record=io.getRecord();System.out.prmtln(M4§要调度的进程:");System.out.pnntln(H进程名"+””+”柱面号”+H'•+”磁道号”+””+'*物理记录号”);System.out.piintlii(couise+H"+cylinder+H"+track+”'*+record);System.out.println(,f当前摆臂方向不变,为"+side);list.Temove(io);//删除当前所指向io表元素}elseif(list.isEmptyO){System.out.println("当前所指向进程:”);System,out.println(cyliiider+H”+track+””+record);side=ndownH;System.out.println("由于没有比当前所指向进程更小的进程,移动方向改变,为"'+side);for(inti=0;i
本文档为【电梯调度算法】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
lijingsunjia
暂无简介~
格式:doc
大小:69KB
软件:Word
页数:12
分类:建筑/施工
上传时间:2022-07-05
浏览量:0