进程调度与管理

进程调度与管理

ID:44673402

大小:490.71 KB

页数:10页

时间:2019-10-24

进程调度与管理_第1页
进程调度与管理_第2页
进程调度与管理_第3页
进程调度与管理_第4页
进程调度与管理_第5页
资源描述:

《进程调度与管理》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、武汉纺织大学《操作系统原理》课程实验报告姓名:郑飞班级:信管21001学号:1014211078实验时间:2012年11月5.0指导教师:实验名称:进程调度与管理一、实验目的1.了解进程的基木状态和创建方法;2.熟悉优先级进程调度的实现原理。二、实验内容1.调试下面的进程管理程序,描述其实现的基本过程。2.了解进程的创建及优先级进程的调度的实现原理和方法,并观察实现的结果。三、操作步骤1.进程管理程序实例:/*进程管理可#include*'stdio.h"#include,,stdlib.hH#include”string.

2、h”#include"clime"#defineWAIT1#defineRUN2#defineFINISH3typedefstructpeb{intnum;structpeb*next;intpriority;inttimeneed;intstate;}peb;/*用该丿了法模拟•个进程*/structpeb水head;structpeb*run;peb*jccreat(intn)/*此函数用于创建进程队列*/{inti=l;peb*head,*p,*q;srand(unsigned(time(NULL)));/*随机函数的

3、初始化*/head=(pcb*)malloc(sizeof(Dcb)):/*创建•个空表头*/p=head;for(i=l;i<=n;i++)/*ffl循环来创建指定个结点*/{q=(pcb*)malloc(sizeof(pcb));p->next=q;q・>num二i;q->next=NULL;q->priority=rand()%10+1;/*随机产生优先级*/q->timeneed=rand()%10;/*随机产生运行时间*/q->state=WAIT;p=q;}returnhead;/*返回表头指针*/}pcb*ge

4、tmaxpriority(structpcb*head)/*执彳丁优先级最高的程序*/{structpcb*p,*q;intmax;p=hcad->ncxt;max=p->priority;/*初始max为队首结点的优先级*/q=p;while(p){if(p->priority>max)/*初始max为队首结点的优先级*/{max=p->priority;ci=P;1p=p->next;}returnq;}voiddelect(stmctpcb*head,structpcb*run)/*此函数用來将运行完的进程删除出进程队

5、列*/{structpcb*q=head;while(q->next)/*担描进程队列,找到已经执行完毕的进尸冈{if(q->next->num==run->num)/*判断是不是已完成的进程*/{if(run->next!=NULL)q->ncxt=run->ncxt;elseq->next=NULL;free(run);/*释放申请的空间*/return;q=q->next;}voidcontrol。/*此函数是用來控制各个进程的执行和调度*/{structpeb*p;run=head->next;/*初始让第一个进程运

6、行*/nin->state=RUN;while(run){if(run->timeneed>())/*如果当前run指针指向的进程所需时间不为零,状态为运行状态,就让这个进程运行*/if(run->statc==RUN){printf("pcb%disrunning.",run->num);printf("Waitinglist:”);/*显示整个等待队列*/p=head->next;while(p){if(p!=run)printf("pcb%d",p->num);p=p->next;}printf(HH);int

7、delay(lOOOOOOO);/*模拟进程运行*/run->timeneed—;/*j®程需要时间减—*/run->priority=run->priority-3;/*进程优先级减三*/}if(run->timeneed!=O){if(run・>priorityv二head・>next・>priority)/*如果当前运行完的进程的优先级低于队甘进程的优先级*/{run->state=WA!T;run=gctmaxpriority(hcad);/*则从进程队列中挑选一个优先级最大的进程来运行*/run->state=RU

8、N;}}else{printf(,'pcb%disfinished.M,run->num);intdelay(10000000);delect(head,run)y*删除该结点*/if(head->next!=NULL)/*判断进程队列是不是为空*/{run=head->next;ru

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

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

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