操作系统结课实验报告(5)

2019-04-23 12:39

第三,创建进程函数 第四,进程调度函数 2.2.3 主要算法描述

时间片轮转调度算法,给每个进程分配固定大小的时间片,依次执行。

优先数调度算法,给每个进程分配一个优先级,按照优先级的大小来决定进程执行次序。

create(int x)创建进程,如果空闲队列的控制进程块为空,无法创建,否者将其取下,填写控制块内容,挂入就绪队列,队列为空,首位指针指向当前送来进程,否则挂入队尾。

sheduling ()检查是否有进程,如果有回复现场信息并执行,同时ready.head后移。

2.3 编码实现

/****************课内:时间片轮转调度算法***************/ #include \#include

#define running 1 //用 running表示进程处于运行态 #define aready 2 //用 aready 表示进程处于就绪态 #define blocking 3 //用 blocking表示进程处于等待态 #define sometime 5 //用 sometime表示时间片大小 #define n 10 //假定系统允许进程个数为 n using namespace std;

21 页 第

int count = 0;//表示当前进程的数目 int num_fin = 0;//表示结束的进程数目

struct {

int name;//进程标志符 int status; //进程状态

int ax,bx,cx,dx;//进程现场信息,通用寄存器内容 int pc; //进程现场信息,程序计数器内容 int psw;//进程现场信息,程序状态寄存器内容 int next;//下一个进程控制块的位置 int time;//所需运行时间 int finished;

}pcbarea[n];//模拟进程控制块区域的数组 int PSW,AX,BX,CX,DX,PC,TIME; //模拟寄存器 int run;//定义指向正在运行进程的进程控制块的指针 struct {

int head; int tail;

}ready;//定义就绪队列的头指针 head和尾指针 tail int pfree; //定义指向空闲进程控制块队列的指针

22 页 第

void print() {

cout<<\进程标志符:\ cout<<\进程状态:\

cout<<\寄存器内容:ax bx cx dx pc psw:\<<\

\

<<\

\

<<\

\

<

cout<<\该进程已经运行完毕。\ pcbarea[run].finished = 1; num_fin++;//结束进程数加一

run=run+1;//如果已经结束就从队列中删除 } else

cout<<\还需要运行\个时间\}

int sheduling()//进程调度函数 {

23 页 第

int i ; //用于记录就绪队列头指针的位置

if(ready.head==-1)//空闲进程控制块队列为空,退出 {

cout<<\无就绪进程\ return 0; }

i=ready.head;//就绪队列头指针赋给 i //cout<

ready.head=pcbarea[ready.head].next;//就绪队列头指针后移 if(ready.head==-1)

ready.tail=-1; //就绪队列为空,修正尾指针 ready.tail pcbarea[i].status=running;//修改进程控制块状态

TIME=TIME-sometime;//设置相对时钟寄存器

//恢复该进程现场信息 AX=pcbarea[run].ax; BX=pcbarea[run].bx; CX=pcbarea[run].cx; DX=pcbarea[run].dx; PC=pcbarea[run].pc;

24 页 第

PSW=pcbarea[run].psw; run=i;//修改指向运行进程的指针 pcbarea[run].time=pcbarea[run].time-5; print(); }//进程调度函数结束

int create(int x,int time) //创建进程 { int i;

//TIME = 0;//进程刚开始创建的时候默认已经运行的时间片为0 if(pfree==-1)//空闲进程控制块队列为空 {

cout <<\无空闲进程控制块,进程创建失败\ return 0; }

i=pfree;//取空闲进程控制块队列的第一个 pfree=pcbarea[pfree].next;//pfree后移 //填写该进程控制块内容: pcbarea[i].name=x;

pcbarea[i].status=aready; pcbarea[i].ax=x;

25 页 第


操作系统结课实验报告(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:人防施工方案带图

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

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