《操作系统》综合实训项目设计-基于多队列反馈的进程调度精选.docxVIP

《操作系统》综合实训项目设计-基于多队列反馈的进程调度精选.docx

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《操作系统》综合实训项目设计-基于多队列反馈的进程调度精选

《操作系统》综合实训项目设计文档【大纲】(不用打印,提交电子稿即可!)基本信息项目名称:成人姓名、学号、完成日期项目名称:基于时间片的多队列反馈的进程管理系统完成日期:2017.5.24实验内容与目的实验内容:编写程序完成单处理器系统的进程调度,要求采用基于时间片多队列反馈式调度策略调度策略。具体内容:1.确定PCB内容及其组织方式。2.要求模拟进程空闲(新)、就绪、运行、阻塞和完成5个状态。3.实现进程创建、进程调度、进程阻塞、进程唤醒和进程撤销5个原语。4.能够模拟进程从生到灭的完整过程。实验目的:1.加深进程概念理解,明确进程与程序区别。2.理解操作系统中进程的组织、创建和调度等方法。主要设计思路和流程图设计思路:1定义数据结构2.设置队列3.创建进程4.创建的进程进入就绪队列5.多级反馈调度1.)在第一就绪队列里的进程被调度运行,进程状态由等待变为运行,设置时间片计数器,每次运行加1,时间片满后,该进程出队列,进入下一级别的就绪队列。若是在最后一级别的队列,则在该队列中进行时间片轮转调度2.)运行进程若是被阻塞的话,该进程出就绪队列,进入阻塞队列,状态变为阻塞态3.)若是唤醒被阻塞进程,则阻塞进程根据其时间片计数器计入相应的就绪队列4.)撤销进程,该进程直接出就绪队列主要数据结构及其说明typedef struct Node{ char name[20]; char state;//进程所处的状态,N新建,W等待,B阻塞,R运行,F结束int round;//时间片计数器int time;//运行时间 struct Node *next;}LinkQueueNode,*PCB;//定义PCBtypedef struct{ LinkQueueNode *front; LinkQueueNode *rear;}LinkQueue;//定义队列void initQueue(LinkQueue *Q)//队列的初始化函数void Initializa()//初始化所有队列void RunPrintf()//打印运行队列void BlockPrintf()//打印阻塞队列void ReadyPrintf(LinkQueue q)//打印就绪队列void putout()//输出函数void EnterQueue(LinkQueue *Q,PCB *p)//进程插入队列函数int DeleteQueue(LinkQueue *Q,PCB *p)//进程出队列void TransferRun(LinkQueue *q1,LinkQueue *q2,PCB q)//进程出就绪队列,入运行队列void Transfer(LinkQueue *q1,LinkQueue *q2,PCB q)//进程唤醒或阻塞时队列转换的函数int MultiDiapatch()//调度函数,若此队列运行的进程时间片满,则进入下一级队列int run()//模拟运行void block()//模拟阻塞void wake()//模拟唤醒int Createprocess(LinkQueue *Q)//进程的创建void meanu()//菜单函数程序运行时的初值和运行结果源程序并附上注释【可是另一个源程序文件,在此应说明该文件名】#includestdio.h#includestdlib.h#includedos.h#includeString.htypedef struct Node{ char name[20]; char state;//进程所处的状态,N新建,W等待,B阻塞,R运行,F结束int round;//时间片计数器int time;//运行时间 struct Node *next;}LinkQueueNode,*PCB;//定义PCBtypedef struct{ LinkQueueNode *front; LinkQueueNode *rear;}LinkQueue;int count=0;LinkQueue qRun,qBlock,qReady1,qReady2,qReady3,qReady4;//定义四个就绪队列void initQueue(LinkQueue *Q)//队列的初始化函数{ Q-front = (LinkQueueNode *)malloc(sizeof(LinkQueueNode)); if(Q-front!=NULL) { Q-rear=Q-front; Q-front-next=NULL; }}void Initializa()//初始化所有队列{ initQueue(qRun); initQ

文档评论(0)

feixiang2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档