计算机操作系统进程调度实验报告

上传人:re****.1 文档编号:564371775 上传时间:2023-01-02 格式:DOCX 页数:9 大小:181KB
返回 下载 相关 举报
计算机操作系统进程调度实验报告_第1页
第1页 / 共9页
计算机操作系统进程调度实验报告_第2页
第2页 / 共9页
计算机操作系统进程调度实验报告_第3页
第3页 / 共9页
计算机操作系统进程调度实验报告_第4页
第4页 / 共9页
计算机操作系统进程调度实验报告_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《计算机操作系统进程调度实验报告》由会员分享,可在线阅读,更多相关《计算机操作系统进程调度实验报告(9页珍藏版)》请在金锄头文库上搜索。

1、操作系统实验题:设计一若干并发进程的进程调度程序一、 实验目的无论是批处理系统、分时系统还是实时系统,用户进程数一般都大于处理机数,这将 导致用户进程互相争夺处理机。这就要求进程调度程序按一定的策略,动态地把处理及分 配给处于就绪队列中的某一进程,以使之执行。进程调度是处理机管理的核心内容。本实 验要求采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进程)和先来先 服务算法编写和调试一个简单的进程调度程序。通过本实验可以加深理解有关进程控制块、 进程队列的概念。并体会了优先数和先来先服务调度算法的具体实施办法。二、 实验要求用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进

2、程调度算法的理 解三、 实验内容进程调度算法:采用最高优先数优先的调度算法(即把处理机分配给优先数最高的进 程)和先来先服务算法(将用户作业和就绪进程按提交顺序或变为就绪状态的先后排成队 列,并按照先来先服务的方式进行调度处理)。每个进程有一个进程控制块(PCB)表示。进程控制块可以包含如下信息:进程名、 优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的 到达时间为进程输入的时间。进程的运行时间以时间片为单位进行计算。每个进程的状态可以是就绪 W (Wait)、运行R (Run)、或完成F(Finish)

3、三种状态 之一。就绪进程获得CPU后都只能运行一个时间片。用已占用CPU时间加1来表示。如果运行一个时间片后,进程的已占用CPU时间已达到所需要的运行时间,则撤消该 进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进 程还需要继续运行,此时应将进程的优先数减 1(即降低一级),然后把它插入就绪队列等 待 CPU。每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的PCB,以便进 行检查。 重复以上过程,直到所要进程都完成为止。四、实验算法流程调度算法的流程图如下 :五、实验程序清单#include stdio.h#include vstdlib.h#in

4、clude vconio.h#define getpch(type) (type*)malloc(sizeof(type)#define NULL 0struct pcb /*定义进程控制块PCB */ char name10;char state;int super;int ntime;int rtime; struct pcb* link;*ready=NULL,*p;typedef struct pcb PCB;char sort() /* 建立对进程进行优先级排列函数*/PCB *first, *second;int insert=0;if(ready=NULL)|(p-super)(

5、ready-super) /*优先级最大者,插入队首*/ p-link=ready;ready=p;else /* 进程比较优先级,插入适当的位置中*/first=ready; second=first-link;while(second!=NULL)if(p-super)(second-super) /*若插入进程比当前进程优先数大,*/ /* 插入到当前进程前面 */ p-link=second;first-link=p;second=NULL;insert=1;else /* 插入进程优先数最低,则插入到队尾*/first=first-link; second=second-link;i

6、f(insert=0) first-link=p;char input() /* 建立进程控制块函数*/int i,num;/clrscr(); /*清屏*/printf(n 请输入被调度的进程数目:); scanf(%d,&num);for(i=0;iname);printf(n 输入进程优先数:); scanf(%d,&p-super);printf(n 输入进程运行时间:); scanf(%d,&p-ntime);printf(n); p-rtime=0;p-state=w;p-link=NULL;sort(); /* 调用sort函数*/int space()int l=0; PCB*

7、 pr=ready; while(pr!=NULL)l+; pr=pr-link;return(l);char disp(PCB * pr) /*建立进程显示函数,用于显示当前进程*/printf(n qname t state t super t ndtime t runtime n); printf(|%st,pr-name);printf(|%ct,pr-state); printf(|%dt,pr-super); printf(|%dt,pr-ntime);printf(|%dt,pr-rtime); printf(n);char check() /* 建立进程查看函数 */PCB*

8、pr;printf(n *当前正在运行的进程是:s,p-name); /*显示当前运行进程*/ disp(p);pr=ready;printf(n *当前就绪队列状态为:n); /*显示就绪队列状态*/ while(pr!=NULL)disp(pr); pr=pr-link;char destroy() /*建立进程撤消函数(进程运行结束,撤消进程)*/ printf(n 进程%s已完成.n,p-name);free(p);char running() /* 建立进程就绪函数(进程运行时间到,置就绪状态*/ (p-rtime)+; if(p-rtime=p-ntime) destroy。; /

9、* 调用destroy函数*/ else(p-super)-;p-state=w;sort(); /* 调用 sort 函数 */main() /*主函数*/int len,h=0;char ch;input(); len=space();while(len!=0)&(ready!=NULL)ch=getchar();h+;printf(n The execute number:%d n,h); p=ready;ready=p-link;p-link=NULL;p-state=R;check();running();printf(n 按任一键继续);ch=getchar(); printf(n

10、n进程已经完成.n); ch=getchar();六、运行结果分析司 C:U sersXhpPocum enteC-FreeTem p床命名 1. ese| 口 | 薛进程剔O - o:输人进程名:XU输入进程优先数唱输入进程运行时间汐进程号No.l:输入进程名:Sfui输入进程优先数江输入进程运行时间江i进趕号如-2 :输X进程宅:ping输入进程优先数汨输入进程运行时间汚The execute nu.iTibep:l*当前正左运行的进程是:Pingqname state super ndtimepuntimeipincf !R!3!5IQ*当前就绪队列状态为:qname !xustate!

11、usuper !2ndtime !7runtimeqnamestatesuperndt imeruntimeSjliiiill!1ill10结果分析:根据上述输入的三个进程的信息可以得到:优先级最高的是进程ping,所以 最先调度进程ping,它的状态为运行态,需要执行的时间为5。而当前就绪队列状态为:进 程xu的优先级比较高,处于就绪队列前面,而进程gui的优先级是三者中最低的,所以处 于就绪队列的最后。而此时这两个进程的状态都为就绪态。结果分析:当进程ping执行了一个时间片之后而它已占用CPU时间已达到所需要的运 行时间,则将它的优先级减1之后,再将三个进程按优先级的大小排列,从中选择优

12、先级大 的进程进入运行状态,则该次进入运行态的是进程xu。按照这种方式一直运行下去,直到:LL C:U5er5hpDocumentsC-FreeTemppS 1.exe| 口 | 回 1“按任一键継续3The execute nunbei:12*当刖正在运行的进程是:Pingqnamestatesuperndt imeruntimeking IR!-l:5M*当刖就绪队列狀态为:qnamestatesuperndt imeruntime:gui!u;-2Ill:3qnamestatesuperndt imeruntime! xu! vi! -2!7H进程Ipinsrl已完成.按任一键継续The

13、 execute nuiinbei:13J结果分析:当进程ping的CPU占用时间等于它需要的执行时间时,进程ping调度完成。 则这时进程调度中还有两个进程:进程gui和进程xu。_! C:U5卜pl.DocumentsC-FreeTemp侏命名 1.exeThe execute nuiinbei: 13*当前正在运行的址程是:Sfuindtine:qname state super :gui !R:-2runtime生冃i就渚疏引狀态共:qnani& state super ;XU; U;-2ndtImo:7:4runtime按圧一键纟蜚绩结果分析:当调度进程中只剩下进程gui和进程xu时,这时根据进程优先级的大小,进 程gui将进入运行态。结果分析:当进程xu完成调度时,进程调度程序中直剩下进程gui 了,这时进程gui将 进入运行态,而当前就绪队列将为空。结果分析:当进程gui的CPU占用时间等于所需要的执行时间时,进程gui调度完成, 则这时进程调度中已经没有需要调度的进程了,则整个进程调度完成。七、总结与体会该实验利用进程调度中的优先级算法调度进程,开始给每一个进程设定一个优先级数, 对于优先级高的进程先调度,优先级低的进程后调度,在调度一个进程时,其他进程将处 于就绪态,而正在被调度的进

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号