计算机操作系统课程设计报告(3)

2019-03-16 11:43

实验二、模拟进程调度功能

实验目的:

通过本实验,进一步掌握进程调度的功能和实现原理。

实验内容:

1、 设计进程调度功能,至少模拟两种以上调度算法。如:优先级调度算法、时间片调度

算法等。

2、 进程调度功能作为一个函数scheduler,加入到实验题目一中。

3、 进程调度程序从就绪队列中挑选进程,若队列为空,应显示“无就绪进程无法调度”

的提示信息。

4、 若选上一个进程,以显示:进程名、状态、时间片、优先级等信息表示一个进程被执

行。若运行完,应删除相应PCB。

实验步骤:

1、 在实验题目一中的主菜单中加入一个菜单项:6 调度,选择该菜单项后,系统进入进程调度。 2、 进程调度的结构:

进程调度子菜单 0---------返回主菜单 1---------优先级调度 2---------时间片调度 请选择您需要的功能选项:

X=? = 0 = 2 = 1 返回上级菜单

转优先级调度算法 转时间片调度算法 11

读入选择=》x

实验代码:

#include #include void priority(); void time(); struct PCB { char name[4]; int priority; int runtime;

};

struct PCB pcb[5]; int q=5;

void main()

{ int p,i; strcpy(pcb[0].name,\序列队列,优先级由高到低为1,2,3..... pcb[0].priority = 2;

pcb[0].runtime = 3;

strcpy(pcb[1].name,\序列队列 pcb[1].priority = 3; pcb[1].runtime = 2;

strcpy(pcb[2].name,\序列队列 pcb[2].priority = 1;

pcb[2].runtime = 4;

strcpy(pcb[3].name,\序列队列 pcb[3].priority = 5;

pcb[3].runtime = 6;

strcpy(pcb[4].name,\序列队列 pcb[4].priority = 4; pcb[4].runtime = 5;

printf(\进程调度子菜单------------------------------\\n\

printf(\ 0---------退出系统\\n\

12

printf(\ 1---------优先级调度\\n\

printf(\ 2---------时间片调度\\n\ printf(\显示所有进程\\n\ for(i=0;i<5;i++) printf(\ %d %d\\n\ printf(\请选择您需要的功能选项:\ scanf(\

printf(\

while(1)

{

if(p==0) break; switch(p) {

//case 0:

//break; case 1: printf(\优先级调度算法\\n\ priority();

break;

case 2: printf(\时间片调度算法\\n\ time();

break;

}

printf(\请选择您需要的功能选项:\ scanf(\

printf(\

}

}

void priority() { int i,j;

int t=0,r=0;

//int q=5;

char name[2]=\ for(i=0;ipcb[j].priority)

{

13

strcpy(name,pcb[i].name); strcpy(pcb[i].name,pcb[j].name); strcpy(pcb[j].name,name); t=pcb[i].priority;

pcb[i].priority=pcb[j].priority;

pcb[j].priority=t;

r=pcb[i].runtime;

pcb[i].runtime=pcb[j].runtime; pcb[j].runtime=r;

} }

printf(\按优先级高低进行排序\\n\

for(i=0;i

printf(\ %d %d\\n\ printf(\ printf(\显示优先级最高的进程\\n\ printf(\ %d %d\\n\

for(i=0;i

strcpy(pcb[i].name,pcb[i+1].name); pcb[i].priority = pcb[i+1].priority; pcb[i].runtime = pcb[i+1].runtime; }

printf(\

printf(\使最高优先级进程处于执行状态(撤销该进程)\\n\ for(i=0;i

printf(\ %d %d\\n\

q=q-1;

}

void time() { int i,j,t; //int q=5; for(i=0;i

printf(\ %d %d\\n\ for(i=0;i

}

printf(\ printf(\将每个执行进程的执行时间减去一个时间片。\\n\

for(i=0;i

14

printf(\ %d %d\\n\

for(i=0;i

for(j=t;j

strcpy(pcb[j].name,pcb[j+1].name);

pcb[j].priority = pcb[j+1].priority;

pcb[j].runtime = pcb[j+1].runtime;

}

q=q-1; }

}

printf(\ printf(\将进行结束的进程撤销。\\n\ for(i=0;i

printf(\ %d %d\\n\ }

}

15


计算机操作系统课程设计报告(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:关于5S管理工作推进的通知

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

马上注册会员

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