基于多队列反馈的进程调度

基于多队列反馈的进程调度

ID:48265882

大小:269.27 KB

页数:35页

时间:2019-12-04

基于多队列反馈的进程调度_第1页
基于多队列反馈的进程调度_第2页
基于多队列反馈的进程调度_第3页
基于多队列反馈的进程调度_第4页
基于多队列反馈的进程调度_第5页
资源描述:

《基于多队列反馈的进程调度》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《操作系统》综合实训项目设计文档【大纲】(不用打印,提交电子稿即可!)一、基本信息项目名称:成人姓名、学号、完成日期项目名称:基于时间片的多队列反馈的进程管理系统完成日期:2017.5.24二、实验内容与目的实验内容:编写程序完成单处理器系统的进程调度,要求采用基于时间片多队列反馈式调度策略调度策略。具体内容:1.确定PCB内容及其组织方式。2.要求模拟进程空闲(新)、就绪、运行、阻塞和完成5个状态。3.实现进程创建、进程调度、进程阻塞、进程唤醒和进程撤销5个原语。4.能够模拟进程从生到灭的完整过程。实验目的:1.加深进程概念理解,明确进程与程序区别。2.理解操作系统中进程的组织、创建和调

2、度等方法。一、主要设计思路和流程图设计思路:1定义数据结构2.设置队列3.创建进程4.创建的进程进入就绪队列5.多级反馈调度1.)在第一就绪队列里的进程被调度运行,进程状态由等待变为运行,设置时间片计数器,每次运行加1,时间片满后,该进程出队列,进入下一级别的就绪队列。若是在最后一级别的队列,则在该队列中进行时间片轮转调度2.)运行进程若是被阻塞的话,该进程出就绪队列,进入阻塞队列,状态变为阻塞态3.)若是唤醒被阻塞进程,则阻塞进程根据其时间片计数器计入相应的就绪队列4.)撤销进程,该进程直接出就绪队列二、主要数据结构及其说明typedefstructNode{charname[20];c

3、harstate;//进程所处的状态,N新建,W等待,B阻塞,R运行,F结束intround;//时间片计数器inttime;//运行时间structNode*next;}LinkQueueNode,*PCB;//定义PCBtypedefstruct{LinkQueueNode*front;LinkQueueNode*rear;}LinkQueue;//定义队列voidinitQueue(LinkQueue*Q)//队列的初始化函数voidInitializa()//初始化所有队列voidRunPrintf()//打印运行队列voidBlockPrintf()//打印阻塞队列voidRea

4、dyPrintf(LinkQueueq)//打印就绪队列voidputout()//输出函数voidEnterQueue(LinkQueue*Q,PCB*p)//进程插入队列函数intDeleteQueue(LinkQueue*Q,PCB*p)//进程出队列voidTransferRun(LinkQueue*q1,LinkQueue*q2,PCBq)//进程出就绪队列,入运行队列voidTransfer(LinkQueue*q1,LinkQueue*q2,PCBq)//进程唤醒或阻塞时队列转换的函数intMultiDiapatch()//调度函数,若此队列运行的进程时间片满,则进入下一级队

5、列intrun()//模拟运行voidblock()//模拟阻塞voidwake()//模拟唤醒intCreateprocess(LinkQueue*Q)//进程的创建voidmeanu()//菜单函数一、程序运行时的初值和运行结果一、源程序并附上注释【可是另一个源程序文件,在此应说明该文件名】#include#include#include#includetypedefstructNode{charname[20];charstate;//进程所处的状态,N新建,W等待,B阻塞,R运行,F结束intround;//时

6、间片计数器inttime;//运行时间structNode*next;}LinkQueueNode,*PCB;//定义PCBtypedefstruct{LinkQueueNode*front;LinkQueueNode*rear;}LinkQueue;intcount=0;LinkQueueqRun,qBlock,qReady1,qReady2,qReady3,qReady4;//定义四个就绪队列voidinitQueue(LinkQueue*Q)//队列的初始化函数{Q->front=(LinkQueueNode*)malloc(sizeof(LinkQueueNode));if(Q->

7、front!=NULL){Q->rear=Q->front;Q->front->next=NULL;}}voidInitializa()//初始化所有队列{initQueue(&qRun);initQueue(&qBlock);initQueue(&qReady1);initQueue(&qReady2);initQueue(&qReady3);initQueue(&qReady4);}voidRunPrintf()//

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

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

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