OS实验指导书

2026/1/21 22:28:17

操作系统实验指导

执笔:胡荣 教研室:信息与计算科学教研室

实验一 进程调度实验

一、

实验目的

用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算

法的理解. 二、

实验学时

2学时 三、

实验要求

编写并调试一个模拟的进程调度程序,采用“最高优先数优先”调度算法中的静态优先数调度对五个进程进行调度。 (实验要求后附了动态优先数调度实现的源码,要求将其修改成静态优先数调度)

四、 算法描述

“最高优先数优先”调度算法的基本思想是把CPU分配给就绪队列中优先数最高的进程。

每个进程有一个进程控制块( PCB)表示。进程控制块可以包含如下信息:进程名、优先数、到达时间、需要运行时间、已用CPU时间、进程状态等等。 进程的优先数及需要的运行时间可以事先人为地指定(也可以由随机数产生)。进程的到达时间为进程输入的时间。

静态优先数是在创建进程时确定的,并在整个进程运行期间不再改变。 动态优先数是指进程的优先数在创建进程时可以给定一个初始值,并且可以按一定原则修改优先数。例如:在进程获得一次CPU后就将其优先数减少1。或者,进程等待的时间超过某一时限时增加其优先数的值,等等。动态优先数调度算法流程图如下:

1

进程调度源程序如下: #include \#include #include

#define getpch(type) (type*)malloc(sizeof(type)) #define NULL 0

2

struct pcb { /* 定义进程控制块PCB */ char name[10]; char state; int super; int ntime; int rtime; struct pcb* link; }*ready=NULL,*p; typedef struct pcb PCB;

sort() /* 建立对进程进行优先级排列函数*/

{

PCB *first, *second; int insert=0;

if((ready==NULL)||((p->super)>(ready->super))) /*优先级最大者,插入队首*/ {

p->link=ready; ready=p; }

else /* 进程比较优先级,插入适当的位置中*/ {

3

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; } }

if(insert==0) first->link=p; }

}

4


OS实验指导书.doc 将本文的Word文档下载到电脑
搜索更多关于: OS实验指导书 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219