进程调度模拟实验
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
.doc
进程调度模拟实验
学号:JB104105
班级:10级计算机科学与技术1
姓名:赵明亮
1(实验目的
通过对进程调度算法的模拟加深对进程概念和进程调度过程的理解。 2. 实验内容
, 用C语言实现对N(N=5)个进程的调度模拟,可以采用如简单轮转法Round Robin、
优先权高者优先算法Highest Priority First等,分别进行模拟调度。
, 每个用来标识进程的进程控制块PCB用结构(记录)来 描述,根据需要,它包括
以下字段:
, 进程标识数ID。
, 进程优先数Priority,并规定优先数越大的进程,其优先权越高。采用简
单轮转法时该字段无用。
, 进程已经占用的CPU时间CPUTIME。
, 进程还需占用的CPU时间ALLTIME。当进程运行完毕时,ALLTIME变
为0。
, 进程状态STATE。
, 队列指针NEXT,用来将PCB排成队列。
, 优先数改变的原则(采用简单轮转法时该字段无用):
, 进程在就绪队列中等待一个时间片,优先数增加1;
。 , 进程每运行一个时间片,优先数减3
, 假设在进行调度前,系统中有5个进程,它们的初始状态可以编程输入(更具有
灵活性),也可以初始化为如下内容:
ID PRIORITY CPUTIME ALLTIME STATE
0 9 0 3 READY
1 38 0 3 READY
2 30 0 6 READY
3 29 0 3 READY
4 0 0 4 READY
, 为了清楚地观察诸进程的调度过程,程序应该将每个时间片内各进程的情况显示
出来并暂停,参考格式如下:
Running:I
Ready Queue:Idi,Idj,…
Block Queue:Idk,Idl,…
==============================================
ID PRIORITY CPUTIME ALLTIME STATE
0 P0 C0 A0 S0
1 P1 C1 A1 S1
2 P2 C2 A2 S2
3 P3 C3 A3 S3
4 P4 C4 A4 S4
=============================================
3.程序代码
PCB Sort_process(PCB *P)//对进程PCB中优先级数进行排序 {
int i,j;
PCB t,Q[4];
for (j=0;j<3;j++)
for (i=0;i<3-j;i++)
if (P[i].Priority
#include"Base.h"
#include"typedef.h"
#include"operation.c" int main()
{
int i;
PCB A[5];
for(i=0;i<=3;i++)
{
scanf("%d%d%d%d%d",&A[i].ID,&A[i].Priority,&A[i].CPUtime,&A[i].
ALLtime,&A[i].n);
}
Output_process(A);
*A=Sort_process(&A[0]);
for (i=1;A[0].n||A[1].n;i++)
{ printf("Running:%d\n",i);
*A=operatin(A);
*A=Sort_process(A);
Output_process(A);
}printf("所有进程都已顺利完成!!\n");
}