欢迎来到天天文库
浏览记录
ID:21866390
大小:325.32 KB
页数:18页
时间:2018-10-25
《课程设计:采用时间片轮转算法的进程调度程序》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、目录1.概&22.课程设计任务及要求32.1任务进度表32.2没计要求33.算法及数据结构43.1算法的总体思想(流程)43.2数据结构模块43.3函数模块63.4主界曲•模块64.程序设计与实现84.1程序流程图84.2程序代码94.3实验结果135.结论146.收获、体会和建议157.参考文献171.概述时间片轮转调度算法采取了非常公平的处理机分配方式,即让就绪队列上的每个进程每次仅运行一个时间片。如果就绪队列上有n各进程,则每个进程每次大约都可获得1/n的处理时间。工作原理:如果在时间片结束时进程还在运行,则CPU将被剥夺并分配给另一个进程。如果进程在时
2、间片结束前阻塞或结來,则CPU当即进行切换。调度程序所要做的就是维护一张就绪进程列表,当进程用完它的时间片后,它被移到队列的末尾。1.课程设计任务及要求2.1任务进度表黄焯荣李尚隆24号下午查阅有关时间片轮转算法的资料。查阅有关时间片轮转算法的资料。25早上编写程序设置时间片功能。编写程序随机生产进程信息功能。25下午编写程序设置互斥资源功能编写程序手动输入进程各项信息功能26早上完善操作界面编写程序计算带权周转时间和平均带权周转吋间功能,修改随机牛.成进程信息功能26下午编写课程设计文档报告编写课程设计文档报告2.2设计要求设计要求(多道、单处理机):1)每
3、一个进程有一个PCB,其
4、Aj容可以根据具体情况设定。2)可以在界面设定的互斥资源(包括两种:输入设备与输出设备)的数目3)进程数、进入内存时间、要求服务时间可以在界面上进行设定4)进程之间存在一定的同步与互斥关系,可以通过界面进行设定,其表示方法如卜:进程的服务时间巾三段组成:I2C1005(表示进程的服务时间由2个时间片的输入,10个时间片的计算,5个时间片的输出)进程间的同步关系用一个段表示:W2,表示该进程先要等待P2进程执行结束后才可以运行因此,进程间的同步与互斥关系、服务时间可以统一用四段表示为:T2C1005W25)可以在运行中显示各进程的状态:
5、就绪、阻塞、执行6)采用可视化界而,可在进程调度过程中随时暂停调度,查看当前进程的状态以及相应的阻塞队列7)具有一定的数据容错性1.算法及数据结构3.1算法的总体思想(流程)1.按先来先服务算法将进程排成就绪队列ready2.执行一个时间片后,系统时间加上时间片长度,进行必要判断。3.未执行队列屮依次把到达时间与系统当前时间判断,若小于则表示已到,插入执行队列run中。4.判断当前执行队列是否已完成,如果完成,则显示完成后,将执行队列屮后囬元素覆盖前面元素。如果没有,则重笈(2)(3)和(4)直至所有进程都执行完毕。5.判断是否继续调用别的算法,如果是则重新幵
6、始,否则结束。3.2数据结构模块主要是定义本设计屮需要的两个主要的结构体PCB和node,从而定义进程控制块变量与队列指针。typedefstructPCB//结构体CStringprocessID;"IDCStringstate;//状态//CStringreason;//阻塞股因intctime;intinputtime;intoutputtime;CStringwait;intrtime;intfinishtime;intflags1;intflags2;intarrivetime;//到达时间//等待进程//已运行时间//结來运行时间//是否申清输入设
7、备//是否申请输出设备structPCB*next;}PCB;classCLinkqueue//链队类定义{private:PCB*front;//队头指针PCB*rear;//队尾指针intcount;//队列结点个数public:intCheckPCB(CStringid);//检查是否存在节点pvoidDeQueue(PCB*);//删除队义•元素voidEnQueue(PCB*);//PCB*DeQueue();voidEnQueue(CStringid,intarrivetime,intinputtime,intctime’intoutputtime
8、,CStringwait);//入队,依次将新增的结点插到队尾intalltime(inta,intf);//计算两个时间相差的秒数intGetFinishTime(PCB*p)const;//获取某个结点的结朿时间//voidSetRearPoint(PCB*);//PCB*GetRearPoint()const;//得到尾指针//voidSetFrontState();CStringGetState(PCB*);intGetATime(PCB*)const;intGetITime(FCB*)const;intGetOTime(PCB*)const;CStr
9、ingGetWait(PCB*)con
此文档下载收益归作者所有