计算机操作系统进程调度实验报告_第1页
计算机操作系统进程调度实验报告_第2页
计算机操作系统进程调度实验报告_第3页
免费预览已结束,剩余10页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

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

3、 FFinish 三种 状态 之一。就绪进程获得 CPU 后都只能运行一个时间片。用已占用 CPU 时间加 1 来表示。如果运行一个时间片后,进程的已占用 CPU 时间已到达所需要的运行时间,那么撤消该 进程,如果运行一个时间片后进程的已占用CPU时间还未达所需要的运行时间,也就是进 程还需要继续运行,此时应将进程的优先数减 1 即降低一级,然后把它插入就绪队列等待CPU每进行一次调度程序都打印一次运行进程、就绪队列、以及各个进程的PCB,以便进行检查。 重复以上过程,直到所要进程都完成为止。四、实验算法流程调度算法的流程图如下/r开_培JE_1fegttaftPCB*如凿圈KJ叮各尹炸悴It

4、妊孰4鬲魯陡樺列可ir.酎同片封“ iQPUI師勰己占用 劝亦1已到达cfu KhD己达51所 迄厂时151亠击亍懾-.弘 -痢爭港曲阳日M1rEiiffittWM入剜缁列五、实验程序清单#include "" #include <>#include <> #define getpch(type) (type*)malloc(sizeof(type) #define NULL 0struct pcb /*定义进程控制块 PCB */ char name10;char state;int super;int ntime;int rtime; struc

5、t pcb* link;*ready=NULL,*p; typedef struct pcb PCB;char sort() /* 建立对进程进行优先级排列函数 */优先级最大者 ,插入队首 */PCB *first, *second;int insert=0;if(ready=NULL)|(p->super)>(ready->super) /* p->link=ready;ready=p;else /* 进程比拟优先级 , 插入适当的位置中 */first=ready; second=first->link; while(second!=NULL)if(p-&g

6、t;super)>(second->super) /* 假设插入进程比当前进程优先数大 ,*/ /* 插入到当前进程前面 */ p->link=second; first->link=p;second=NULL; insert=1;else /* 插入进程优先数最低 , 那么插入到队尾 */ first=first->link; second=second->link;if(insert=0) first->link=p;char input() /* 建立进程控制块函数 */int i,num; d:n",i); p=getpch(PCB)

7、; printf("n 输入进程名 :"); scanf("%s",p->name); printf("n 输入进程优先数 :"); scanf("%d",&p->super);printf("n 输入进程运行时间 :"); scanf("%d",&p->ntime);printf("n"); p->rtime=0;p->state='w' p->link=NULL;sort(); /*

8、调用 sort 函数 */int space()int l=0; PCB* 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"

9、,pr->super); printf("|%dt",pr->ntime);printf("|%dt",pr->rtime); printf("n");char check() /*建立进程查看函数 */PCB* pr;printf("n * 当前正在运行的进程是 :%s",p->name); /* 显示当前运行进程 */ disp(p); pr=ready;printf("n * 当前就绪队列状态为 :n"); /* 显示就绪队列状态 */ while(pr!=NULL

10、)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(); /* 调用 destroy 函数 */else (p->super)-;p->state='w'sort(); /* 调用 so

11、rt 函数 */ 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();print

12、f("nn 进程已经完成 .n"); ch=getchar();六、运行结果分析訂 GU»nXlpy) oc Lm entsC FreeTe n p vSLete结果分析:根据上述输入的三个进程的信息可以得到:优先级最高的是进程ping,所以最先调度进程ping,它的状态为运行态,需要执行的时间为5。而当前就绪队列状态为:进程xu的优先级比拟高,处于就绪队列前面,而进程 gui的优先级是三者中最 低的,所以处 于就绪队列的最后。而此时这两个进程的状态都为就绪态。结果分析:当进程Ping执行了一个时间片之后而它已占用 CPU时间已到达所需要的 运 行时间,那么将它的

13、优先级减1之后,再将三个进程按优先级的大小排列,从中选择优 先级大 的进程进入运行状态,那么该次进入运行态的是进程xu。按照这种方式一直运行下去,直到:结果分析:当进程ping的CPU占用时间等于它需要的执行时间时,进程ping调度完成 那么这时进程调度中还有两个进程:进程gui和进程xu。结果分析:当调度进程中只剩下进程gui和进程xu时,这时根据进程优先级的大小, 进程gui将进入运行态结果分析:当进程xu完成调度时,进程调度程序中直剩下进程gui 了,这时进程gui将进入运行态,而当前就绪队列将为空。结果分析:当进程gui的CPU占用时间等于所需要的执行时间时,进程gui调度完成,那么这时进程调度中已经没有需要调度的进程了,那么整个进程调度完成。第11页共13页七、总结与体会该实验利用进程调度中的优先级算法调度进程,开始给每一个进程设定一个优先级数,对于优先级高的进程先调度,优先级低的进程后调度,在调度一个进程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论