欢迎来到第一文库网! | 帮助中心 第一文库网-每个人都是第一
第一文库网
全部分类
  • 研究报告>
  • 学术论文>
  • 全科教育>
  • 应用文档>
  • 行业资料>
  • 企业管理>
  • 技术资料>
  • 生活休闲>
  • ImageVerifierCode 换一换
    首页 第一文库网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    操作系统实验报告_17.docx

    • 资源ID:939692       资源大小:68.45KB        全文页数:24页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: QQ登录 微博登录
    二维码
    扫码关注公众号登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    操作系统实验报告_17.docx

    京盛丈号熹皇岛台我计算机与通信工在号就操作系统课程设计设计题目FCFS调度算法模拟和进程管理器专业名称计算机科学与技术班级学号2133319学生姓名指导教师马海涛2016.01.112016.01.20设计时间课程设计任务书专业:计算机科学与技术学号:2133319学生姓名(签名设计题目:FCFS调度算法模拟及进程管理器一、设计实验条件808实验室二、设计任务及要求1 .FCFS调度算法的模拟实现;要求:提供10个模拟作业,在屏幕上打印所提供的作业信息,输入进程名作业被放入就绪队列,程序根据FCFS调度算法,对就绪队列中的进程进行调度执行,每个模拟进程执行时打印自身的进程名、到达时间等信息,最后要打印出所调度作业的平均周转时间和平均带权周转时间2 .进程管理器;要求:实现一个系统进程管理器,能够显示当前系统的活动进程信息(进程名、用户、优先级、内存使用等),并能结束或创建特定进程。三、前言融会贯通计算机操作系统课程的内容,通过知识的综合运用,加深对计算机操作系统工作原理及相互联系的认识;掌握进程调度的实现以及原理培养使用代码模拟操作系统功能的能力,同时加深对操作系统的认识四、设计主体1.FCFS调度算法的模拟实现(该部分由组员自己独立完成)1)设计内容建立数据结构,提供10个模拟作业,在屏幕上打印所提供的作业信息,输入进程名作业被放入就绪队列,程序根据FCFS调度算法,对就绪队列中的进程进行调度执行,每个模拟进程执行时打印自身的进程名、到达时间等信息,最后要打印出所调度作业的平均周转时间和平均带权周转时间。和其他调度算法相比较,分析该调度算法的优缺点。2)分析使用java语言模拟进程调度的FCFS算法。算法的核心思想是:根据进程进入就绪队列的到达时间前后顺序来进行处理机调度。先到的进程,有限享受处理机,直到该进程执行完毕或因某事发生等待,而释放处理机。设计思路:为进程建立一个类PCB,其中包含进程名、到达时间、服务时间、开始执行时间、完成时间、周转时间、带权周转时间7个属性。程序初始化时,创建10个PCB对象,每个对象仅初始化进程名和服务时间。之后通过从控制台输入进程名的顺序来决定10个进程进入就绪队列的顺序,也就是处理的顺序。其中周转时间二完成时间-到达时间,带权周转时间二周转时间/服务时间3)结论先来先服务调度算法,有利于长作业,不利于短作业。从运行结果中可以看出短作业带权周转时间明显偏高,该算法有利于CPU繁忙型作业,不利于IO繁忙型作业4)代码以下是进程PCB的代码:pub1icc1assPCBprivateStringname;进程名privateintreachTime;到达时间(由给进行命名的顺序决定)privateintSerViCeTime;服务时间privateintStartTime;开始执行时间privateintfinishTime;完成时间privateintUimaroundTime;周转时间=完成时间到达时间privatedoub1eIUmaroUndTimeWithWeight;带权周转时间二周转时间/服务时间pub1icPCB()(th1s.name="")初始化时已知服务时间*/pub1icPCB(Stringname,intServiceTime)this.name=name;this.serviceTime=ServiceTime;)打印作业信息*get/set方法组*/pub1icStringgetName()returnname;)pub1icvoidsetName(Stringname)this.name=name;)pub1icintgetReachTime()returnreachTime;)pub1icvoidsetReachTime(intreachTime)this.reachTime=reachTime;/设置到达时间)pub1icintgetServiceTime()returnServiceTime;)pub1icvoidsetServiceTime(intServiceTime)this.serviceTime=ServiceTime;)pub1icintgetStartTime()returnStartTime;)pub1icvoidsetStartTime(intStartTime)this.StartTime=StartTime;if(this.startTime>=O)(this.finishTime=this.startTime+this.serviceTime;设置完成时间this.turnaroundTime=this.finishTime-this.reachTime;设置周转时间this.turnaroundTimeWithWeight=1.0*this.turnaroundTimethis.serviceTime;设置带权周转时间)pub1icintgetFinishTime()returnfinishTime;pub1icintgetTurnaroundTime()returnturnaroundTime;1pub1icdoub1egetTumaroundTimeWithWeight()returnturnaroundTimeWithWeight;* 打印进程信息* /pub1icvoidprintMSG()System.ow.print1n(this.name+"t,'+this.reachTime+t"+this.serviceTime+"t+this.startTime+,'tt"+this.finishTime÷"t"+this.turnaroundTime+t"+(PoMe.parseDoubIe(ne%,Decima1Format(n#.#").format(this.tumaroundTimeWithWeight);)FCFS算法的核心功能代码:pub1icc1assFCFS* 创建工0个作业pub1icPCBinit()PCBpcbs=newPCBnewPCB("A",1),newPCB("B",100),newPCB("C'1),newPCB("D",100),newPCB(“E”,22),newPCB("F",33),newPCB("G",11),newPCB("H",44),newPCB("I",55),newPCB("3",66),;returnpcbs;* /pub1icvoidprintPCB(PCBpcbs)SyStem.ou,Print1n(“作业名tt服务时间”);for(inti=0;i<pcbs.1ength;i+)(System.out.print1n(pcbsi.getName()+"tt"+pcbsi.getServiceTime();privateboo1eanisContain(Stringname)return"ABCDEFGHI3".contains(name);将作业按照一定顺序加入就绪队列*/pub1icvoidSe1ectPCB(1ist<PCB>1ist,PCBpcbs)(ScannerCOnSOIe=newScanner(System.in);Map<StringjPCB>map=newHashMap<StringjPCB>();for(inti=0;i<pcbs.1ength;i+)map.put(pcbsi.getName(),pcbsi);)inti=0;初始的到达时间默认是0whi1e(true)* 避免重复输入进程名* /privateboo1eanisInc1ude(1ist<PCB>IistjStringname)for(PCBp:1ist)(if(p.getName().equa1s(name)returntrue;returnfa1se;*SyStem.out.printin(“请输入第”+(i+1)+”个进程名”);Stringname=conso1e.next1ine();if(!isContain(name)System.out.printin(”请输入正确的进程名”);continue;)e1seif(!is1nc1ude(1ist,name)(PCBp=map.get(name);p.setReachTime(i);设置进程到达时间if(i=0)第一个加入到就绪队列,设置开始执行时间pSetStartTime(i);e1seintbefore=1ist.get(i-1).getFinishTime();if(before<p.getReachTime()SyStem.out.prirrt1n("开始执行时间小于到达时间,逻辑错误!,);break;pSetStartTime(before);1ist.add(p);if(+i>=10)break;e1seSyStemout.printin("请不要重复输入”);continue;pub1icvoidrunPCB(1ist<PCB>1ist)intsumTurnaround=0;doub1eSumTurnaroundWithWeight=O;SyStem.out.printin(',进程名t到达时间t服务时间t开始执行时间t完成时间Vt周转时间Vt带权周转时间”);for(PCBp:1ist)tryThread.s1eep(300);p.printMSG();sumTurnaround+=p.getTurnaroundTime();sumTurnaroundWithWeight+=p.getTurnaroundTimeWithWeight();catch(InterruptedExceptione)e.printStackTrace();SyStem.out.printIn("平均周转时间:”+Doub1e.parseDoub1e(newDecima1Format("#.#").format(1.0*sumTurnaround1ist.size()+"-平均带权周转时间:"+Doub1e.ParSeDOUb1e(newDecima1Format("#.#").format(sumTurnaroundWithWeight1ist.size();5)结果展示:作业信息如下:作北名服务时间A1B100C1DeeE22F33G11H44I5S366输入进程名,将作业加入就绪队列:清输入第1个进程名A清输入第2个进程名B清输入第3个进程名C清输入第7个进程

    注意事项

    本文(操作系统实验报告_17.docx)为本站会员(lao****ou)主动上传,第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知第一文库网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 001doc.com网站版权所有   

    经营许可证编号:宁ICP备2022001085号

    本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



    收起
    展开