实验项目三 进程调度
实验目的
理解进程控制块和进程组织方式;
掌握时间片轮转调度算法实现处理机调度。
实验内容
建立合理的PCB数据结构,建立含有8个进程结点的就绪队列,每个进程的要求运行时间随机产生,要求每个进程的要求运行时间不大于15。
设置时间片大小(3~6),使用时间片轮转调度算法实现处理机调度。
源程序及运行结果
源程序:
#include
#include
#include
#define LEN sizeof(PCB)
#define tp 5
#define NUM 8
int main()
{
struct PCB
{
int name;
int runtime;
int runedtime;
int killtime;
struct PCB *next;
};
typedef struct PCB PCB;
int i;
PCB *runqueue;//运行队列指针
PCB *top,*tail,*temp;//就绪队列指针
srand((int)time(0));
for(i=0;iname=i;
temp->runtime=rand()%15;
temp->runedtime=0;
temp->next=NULL;
temp->killtime=0;
if(i==0)
{
top=temp;
tail=temp;
}
else
{
tail->next=temp;
tail=temp;
}
printf("process name %d, runtime=%d, runedtime=%d,killtime=%d
", tail->name,tail->runtime,tail->runedtime,tail->killtime);
}
while(top!=tail)
{
runqueue=top;
top=top->next;
runqueue->next=NULL;
runqueue->runtime=runqueue->runtime-tp;
if(runqueue->runtime<=0)
{runqueue->killtime=runqueue->runtime+tp;
runqueue->runedtime=runqueue->runedtime+runqueue->killtime;
printf("process name %d, runtime=%d, runedtime=%d,killtime=%d
", runqueue->name,runqueue->runt