欢迎来到天天文库
浏览记录
ID:39514008
大小:122.72 KB
页数:15页
时间:2019-07-04
《进程调度模拟试验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《计算机操作系统原理》课外上机实验报告题目名称进程调度算法模拟院系信息学院班级完成时间10月17日指导老师本次实验成绩组长联系电话邮件地址组长(姓名、学号)主要任务成员(姓名、学号)主要任务主要原理及说参考的资料(包括实验内容及条件)本实验模拟了进程调度的三种算法:静态优先级的立即抢占式调度算法;动态优先级调度算法;时间片轮转调度算法。一、静态优先级的立即抢占式调度算法原理:在创建进程时,由系统随机产生该进程的优先数(本实验规定:优先数大者,优先权高),且优先数在生命周期中不再改变。就绪队列中的进程根据优先权高低
2、进行排队,等待CPU运行。在进程运行过程中,如果就绪队列出现优先级更高的进程时(本实验开始运行后系统会在任意时间随机创建一个新的进程,最多共创建7个),则立即进行重新调度,剥夺当前运行进程所占有的CPU,分配给更高优先权的进程使用。二、动态优先级调度算法原理:在创建进程时,由系统随机产生该进程的优先数(本实验规定:优先数大者,优先权高),但动态优先级的优先数随时间会发生改变。本实验的基本原则是:正在运行的程序每次运行CPU的时间为1000ms时,优先数减1,若在就绪队列中出现优先权高的进程,则剥夺当前进程所占有的
3、CPU,分配给优先权高地进程使用,否则,继续占用CPU,当运行1000ms后,优先数继续减1,重新比较。以此循环,直至所有进程运行完为止。三、时间片轮转调度算法原理:就绪队列中的每个进程轮流的运行一个时间片(本实验时间片为固定值2000ms),当时间片耗尽时,就强迫当前的运行进程让出处理器,转而排到就绪队列尾部,等候下一轮调度。本实验中,在创建进程时,就绪队列按照优先权高低进行排队,然后依次从就绪队列取出首个进程根据时间片轮转法进行调度。当进程正在运行时,系统会在任意时间自动创建新的进程(规定:系统自动创建最多7
4、个进程,此后不再创建),并根据优先级高低插入就绪队列中。当某个进程的时间片耗尽时,则排到就绪队列尾部,然后调度就绪队列的首个进程。进程每呆一个时间片,优先数减1。以上三种算法都是每1000ms显示一次运行结果,并规定每次运行CPU时间为1000ms。标注:R:代表正在CPU中运行;W:代表正在就绪队列中;F:代表此进程已运行完。《计算机操作系统原理》课外上机实践南京农业大学信息学院计算机系第15页主要算法及流程图(包括实验步骤)开始主程序流程图:输入进程数,系统自动创建指定数目的进程PCB选择进程调度算法:1.静
5、态优先级立即抢占式;3.时间片轮转法2.动态优先级;程序结束静态优先级立即抢占式调度流程图:静态优先级立即抢占式获取进程信息,如运行时间,优先级等,根据优先级调度进程系统自动创建新的进程调用静态优先级立即抢占式算法,优先数不改变运行进程进程运行完《计算机操作系统原理》课外上机实践南京农业大学信息学院计算机系第15页动态优先级调度流程图:动态优先级调用动态优先级算法,占用CPU时间一次获取进程信息,如进程运行时间,优先级等。根据优先级高低进行调度判断进程是否运行完N优先数减1判断该进程优先级是否最高YN程序结束《计
6、算机操作系统原理》课外上机实践南京农业大学信息学院计算机系第15页时间片轮转法调度流程图:时间片轮转法获取进程信息,本程序按优先级高低排在就绪队列取出就绪队列首个进程,调用时间片轮转法算法在每个时间片内运行进程计算各进程剩余时间大于0程序运行结束《计算机操作系统原理》课外上机实践南京农业大学信息学院计算机系第15页本实验涉及的主要数据结构和函数说明主要数据结构:PCB类包含的属性与方法:publicintid;//进程唯一标识:进程号publicintprio;//进程优先数,随机产生(10以内)Stringin
7、;//进程进入CPU的时间,格式为hh:mm:ss(当前系统时间)publiccharstate;//进程的状态标志publicintcputime;//进程已在CPU运行的时间publicintneedtime;//进程需要运行的时间(开始由系统随机产生,此后每运行一次,相应减少)PCBnext;//用来将多个进程PCB块链接为链表publicPCB()//构造函数{}publicPCB(intid)//带参的构造函数{this.id=id;}LinkList类包含的属性与方法:publicstaticintj
8、=0;//用来标识创建进程的IDpublicstaticPCBready,run,finish;//分别表示运行,就绪,完成,初始化都为NULL;publicstaticvoidprt3();//输出显示函数,首先输入运行队列进程,其次是就绪队列进程,最后是完成队列的进程;publicstaticvoidinsert(PCBq)//按优先级高低插入就绪队列publicst
此文档下载收益归作者所有