电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

多级反馈队列调度算法_C语言模拟实现VIP专享VIP免费

多级反馈队列调度算法_C语言模拟实现_第1页
多级反馈队列调度算法_C语言模拟实现_第2页
多级反馈队列调度算法_C语言模拟实现_第3页
多级反馈队列调度算法 C 语言模拟实现 收藏 多级反馈队列调度算法: 1、设置多个就绪队列,并给队列赋予不同的优先级数,第一个最高,依次递减。 2、赋予各个队列中进程执行时间片的大小,优先级越高的队列,时间片越小。 3、当一个新进程进入内存后,首先将其放入一个对列末尾,如果在一个时间片 结束时尚未完成,将其转入第二队列末尾。 4、当一个进程从一个对列移至第 n 个队列后,便在第 n 个队列中采用时间片轮转执行完。 5、仅当时间片空闲时,才调度第二个队列中的进程。 (1~i-1)空闲时,才调度i,如果处理机正在第 i 队列中运行,又有新进程进入优先权较高 队列,则新进程抢占处理机,将正在运行的进程放入第 i 队列队尾,将处理机分给新进程。 view plaincopy to clipboardprint? #include #include #include typedef struct node /*进程节点信息*/ { char name[20]; /*进程的名字*/ int prio; /*进程的优先级*/ int round; /*分配 CPU 的时间片*/ int cputime; /*CPU 执行时间*/ int needtime; /*进程执行所需要的时间*/ char state; /*进程的状态,W——就绪态,R——执行态,F——完成态*/ int count; /*记录执行的次数*/ struct node *next; /*链表指针*/ }PCB; typedef struct Queue /*多级就绪队列节点信息*/ { PCB *LinkPCB; /*就绪队列中的进程队列指针*/ int prio; /*本就绪队列的优先级*/ int round; /*本就绪队列所分配的时间片*/ struct Queue *next; /*指向下一个就绪队列的链表指针*/ }ReadyQueue; PCB *run=NULL,*finish=NULL; /*定义三个队列,就绪队列,执行队列和完成队列*/ ReadyQueue *Head = NULL; /*定义第一个就绪队列*/ int num; /*进程个数*/ int ReadyNum; /*就绪队列个数*/ void Output(); /*进程信息输出函数*/ void InsertFinish(PCB *in); /*将进程插入到完成队列尾部*/ void InsertPrio(ReadyQueue *in); /*创建就绪队列,规定优先数越小,优先级越低*/ void PrioCreate(); /*创建就绪队列输入函数*/ void GetFirst(ReadyQueue *queue); /*取得某一个就绪队列中的队头进程*/ void InsertLast(PCB *in,ReadyQueue *queue); /*将进程插入到就绪队列尾部*/ void ProcessCreate(); /*进程创建函数*/ void RoundRun(ReadyQueue *timechip);...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部