欢迎来到天天文库
浏览记录
ID:6809992
大小:112.50 KB
页数:20页
时间:2018-01-26
《操作系统课程设计报告书-进程调度模拟程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、沈阳理工大学课程设计专用纸No19目录进程调度模拟程序1一.设计目的及要求1二.概要设计1三.算法流程图2四.源程序及注释6五.运行结果及分析16六.课程设计总结19七.参考文献19沈阳理工大学沈阳理工大学课程设计专用纸No19进程调度模拟程序一.设计目的及要求编写一个进程调度程序,允许多个进程并行执行。本次设计将采用三种算法实现进程的并行执行,分别是最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)、先来先服务算法、按时间片轮转调度算法。二.概要设计①每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CP
2、U时间、进程状态。②进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为输入进程的时间。进程的运行时间以时间片为单位进行计算。③每个进程的状态可以是就绪W(Wait)、运行R(Run)、或完成F(Finish)三种状态之一。④建立一个pcbobj[]的数组来存放进程队列。建立一个类pcbobj存放进程的各种信息并对这些信息的操作。建立一个类wait_manager来对就绪进程进行管理。建立一个类cpu_manager来对运行的进程进行管理。沈阳理工大学沈阳理工大学课程设计专用纸No19三.算法流程图开始初始化进程信息FCFS算法结束RR算法HP
3、F算法Y调用FCFS算法调用RR算法Y调用HPF算法YNNN图1-1主程序流程图沈阳理工大学沈阳理工大学课程设计专用纸No19start信息初始化进程调度完毕输出该时刻的进程状态表EndY更新进程信息打印进程状态就绪队列不为空&&cpu空闲Y将就绪队列的第一个进程给cpuCpu为busy态NY更新运行的进程信息运行进程运行完毕Cpu.remove()YN时间记录加一N图1-2FCFS算法流程图沈阳理工大学沈阳理工大学课程设计专用纸No19start信息初始化进程调度完毕输出该时刻的进程状态表EndNY更新进程信息打印进程状态就绪队列不为空&&cpu空闲Y将就绪队列的第一个进程给
4、cpuCpu为busy态NY更新运行的进程信息进程时间加一运行进程运行完毕Cpu.remove()进程时间清零YN时间记录加一是否超时进程加到就绪队列进程时间清零YNN图1-3RR算法流程图沈阳理工大学沈阳理工大学课程设计专用纸No19start信息初始化进程调度完毕输出该时刻的进程状态表EndY更新进程信息打印进程状态就绪队列不为空&&cpu空闲Y将就绪队列的第一个进程给cpuCpu为busy态NY更新运行的进程信息运行进程运行完毕进程加到就绪队列记录进程临时信息NN时间记录加一NCpu.remove()Y图1-4HPF算法流程图沈阳理工大学沈阳理工大学课程设计专用纸No19
5、四.源程序及注释----------------------------------------------pcbobj.h---------------------------------------------#includeusingnamespacestd;#ifndefPCBOBJ_H_#definePCBOBJ_H_enumpStatus{Wait,Run,Finish,UNGO};//定义进程的四种状态classPCBobj{public:PCBobj();PCBobj(stringname,intid,intreach,intexecute);v
6、irtual~PCBobj();intgetExecTime()const;intgetHasExecTime()const;intgetId()const;intgetReachTime()const;stringgetName()const;pStatusgetStatus()const;voidsetHasExecTime(inthasExecTime);voidsetId(intpId);voidsetStatus(pStatusstatus);voidsetExecTime(intexecTime);voidsetName(stringpName);voidsetRe
7、achTime(intreachTime);boolisFinish();//进程是否运行完毕boollast_statu;//判断进程上一个cpu是否是运行态private:stringpName;//进程名intpId;//进程优先数intreachTime;//进程到达时间intexecTime;//进程需要运行的时间inthasExecTime;//进程已经运行的时间pStatusstatus;};typedefPCBobj*pcbobj;#endif/*PCBOBJ_H_*/---
此文档下载收益归作者所有