操作系统:进程调度.docx

操作系统:进程调度.docx

ID:50676732

大小:309.03 KB

页数:25页

时间:2020-03-07

操作系统:进程调度.docx_第1页
操作系统:进程调度.docx_第2页
操作系统:进程调度.docx_第3页
操作系统:进程调度.docx_第4页
操作系统:进程调度.docx_第5页
资源描述:

《操作系统:进程调度.docx》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、计科112康岩岩2011008142202013/4/29操作系统实验报告实验三:进程调度实验三:进程调度一、实验目的加深理解并模拟实现进程(作业)调度算法。1)熟悉常用的进程调度算法,如FCFS、SPF、FPF、高响应比优先、时间片轮转;2)结合所学的数据结构及编程知识,选择一种进程调度算法予以实现。二、实验属性该实验为设计性实验。三、实验仪器设备及器材普通PC386以上微机四、实验要求本实验要求2学时完成。本实验要求完成如下任务:1)编程实现单处理机系统中的进程调度,要求从FCFS、SPF、FPF、高响应比优先、时间片轮转

2、算法中至少选择三个;2)最后编写主函数对所做工作进行测试。实验前应复习实验中所涉及的理论知识和算法,针对实验要求完成基本代码编写并完成预习报告、实验中认真调试所编代码并进行必要的测试、记录并分析实验结果。实验后认真书写符合规范格式的实验报告(参见附录A),并要求用正规的实验报告纸和封面装订整齐,按时上交。一、实验步骤(一)任务分析:本次试验要求利用程序实现操作系统的进程调度算法,只是进行简单的模拟,并不涉及真正的进程创建、通信等操作。对于每一个进程,可以用一个数据对象PCB进行表示,它包含了进程名称、开始时间、运行时间等所有有

3、关该进程的数据。在模拟程序中,需要用到一个链表来储存所有进程,然后再此链表的基础上进行各种调度算法。为了便于直观表示程序运行(即执行算法)的结果,还需把链表中的数据呈现到界面上,当然在此试验中,界面不是主要的一部分。(二)程序设计:a.总体设计:本次试验所用语言依然为java.对单个进程用类PCB表示,它的定义如下:publicclassPCB{publicPCB(){}privateStringname;//进程名privateintarriveTime=0;//到达时间privateintneedServerTime=0;

4、//需要服务的时间privateintpcbLeve=0;//线程优先级privateintstartTime=0;//开始执行时间privateintdoneTime=0;//已经完成的量,仅仅在时间片轮转中使用privateintfinishTime=0;//结束时间privateintzouzhuanTime=0;//周转时间privatefloatweightZzTime=0;//带权周转时间//以下为大量的getXxx/setXxx函数在此省略}对于进程对象,可以在程序运行过程中随时创建,创建的进程对于其创建时间有一

5、个强制设定,就是其到达时间一定大于上一个个创建的进程的到达时间。创建好的进程会加入一个全局的链表中。在执行算法时,需要将此链表作为参数传给实现算法的函数。函数执行完毕后,会将处理后的链表返回。此后可以在主界面上显示返回的数据结果。a.具体实现:本次试验共实现了四个进程调度算法,分别是:FCFS、SPF、FPF以及时间片轮转算法。其中,SPF与FPF算法几乎代码完全相同,此后会只介绍其中一个算法。FCFS先来先服务算法:FCFS算法只需要对进程链表进行遍历即可,遍历的前提是进程链表内的进程一定是按照进程到达顺序排列的,在遍历过程

6、总需要记录缓存进程结束的时间,以便给下个进程进行比较。比较原则如下:如果某个进程的到达时间大于上个进程的结束时间,即这个进程在上个进程完成后才到达,则这个进程的开始时间为其自身到达时间。否者其开始时间为上个进程的结束时间。具体实现代码如下:/***先来先服务算法**@return*/publicListdoFCFS(){//用于存放计算后的数据的链表ListreturnList=newArrayList();PCBtemp=newPCB();//遍历进程链表,此时的链表一定是进程按到达时间顺序排列

7、的,这在构造函数中已经确定for(PCBpbc:PcbList){//到达,开始,结束均为时间点//服务时间,周转时间均为时间段//如果到达时间小于上次任务结束时间,这开始时间为上次任务结束的时间,或者为其到达时间,即到达后就开始if(pbc.getArriveTime()

8、ime(pbc.getStartTime()+pbc.getNeedServerTime());//设置周转时间pbc.setZouzhuanTime(pbc.getFinishTime()-pbc.getArriveTime());//设置带权周转时间floatwt=((f

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。