进程调度算法实验报告材料Word文件下载.docx

上传人:b****2 文档编号:14795863 上传时间:2022-10-24 格式:DOCX 页数:17 大小:111.47KB
下载 相关 举报
进程调度算法实验报告材料Word文件下载.docx_第1页
第1页 / 共17页
进程调度算法实验报告材料Word文件下载.docx_第2页
第2页 / 共17页
进程调度算法实验报告材料Word文件下载.docx_第3页
第3页 / 共17页
进程调度算法实验报告材料Word文件下载.docx_第4页
第4页 / 共17页
进程调度算法实验报告材料Word文件下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

进程调度算法实验报告材料Word文件下载.docx

《进程调度算法实验报告材料Word文件下载.docx》由会员分享,可在线阅读,更多相关《进程调度算法实验报告材料Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。

进程调度算法实验报告材料Word文件下载.docx

#include<

iostream.h>

#definen20

typedefstruct

{

intid;

//进程名

intatime;

//进程到达时间

intruntime;

//进程运行时间

}fcs;

voidmain()

{

intamount,i,j,diao,huan;

fcsf[n];

cout<

<

"

请输入进程个数:

endl;

cin>

>

amount;

for(i=0;

i<

i++)

cout<

请输入进程名,进程到达时间,进程运行时间:

cin>

f[i].id;

f[i].atime;

f[i].runtime;

}

i++) 

//按进程到达时间的先后排序

//如果两个进程同时到达,按在屏幕先输入的先运行

for(j=0;

j<

amount-i-1;

j++)

if(f[j].atime>

f[j+1].atime)

{diao=f[j].atime;

 

f[j].atime=f[j+1].atime;

f[j+1].atime=diao;

huan=f[j].id;

f[j].id=f[j+1].id;

f[j+1].id=huan;

}

进程:

f[i].id<

从"

f[i].atime<

开始"

"

在"

<

f[i].atime+f[i].runtime<

之前结束。

f[i+1].atime=f[i].atime+f[i].runtime;

2.短进程优先算法

#include<

stdio.h>

#definen5

#definenum5

#definemax65535

typedefstructpro

{intPRO_ID;

intarrive_time;

intsum_time;

intflag;

}Pro;

//整数排序

intbubble(inttemp[])

{

inti,j,tem=0;

for(i=1;

num;

{intlastX=1;

for(j=0;

num-i;

{if(temp[j]>

temp[j+1])

{tem=temp[j];

temp[j]=temp[j+1];

temp[j+1]=tem;

lastX=0;

}

}

if(lastX==1)break;

}

returntemp[0];

}

//进程排序

Probubble(Prop[])

inti,j;

Protemp={0};

Pros[num];

for(i=0;

{s[i]=p[i];

{

intlastX=1;

{

if(s[j].sum_time>

s[j+1].sum_time)

{

temp=s[j];

s[j]=s[j+1];

s[j+1]=temp;

returns[0];

voidSPF(intp)

if(n>

0)

inti,j,k,l,tc=0;

Proseq[n];

Protemp_seq[n];

printf("

短进程优先调度算法SPF\n"

);

请依次输入5个进程的进程号、到达时间和执行时间\n"

成员变量用逗号隔开;

进程间用回车隔开\n"

for(i=0;

n;

i++){

scanf("

%d,%d,%d"

&

seq[i].PRO_ID,&

seq[i].arrive_time,&

seq[i].sum_time);

调度顺序是:

\n"

//初始化tc

inttemp[num];

temp[i]=seq[i].arrive_time;

tc=bubble(temp);

//tc是断点啊

//flag表示对应i的pro的队列情况

//-1表示未进入过队列,0表示在队列中,1表示被清除了

seq[i].flag=-1;

i++){

j++){

if(seq[j].flag!

=1&

&

seq[j].arrive_time<

=tc){

seq[j].flag=0;

for(j=0;

temp_seq[j]=seq[j];

=0){

temp_seq[j].sum_time=max;

l=bubble(temp_seq).PRO_ID;

if(l==seq[j].PRO_ID){

k=j;

tc=tc+bubble(temp_seq).sum_time;

seq[k].flag=1;

%d"

l);

SPF(n);

3.时间片轮转调度算法

头文件RR.h

iostream>

string.h>

stdlib.h>

ctype.h>

#defineMaxNum100

typedefstructpcb//定义进程控制块

charName[MaxNum];

intarrivetime;

//到达时间

intruntime;

//运行时间

intwholetime;

//固定运行时间

intFinishTime;

//完成时间

doubleWeightTime;

//周转时间

doubleWeightWholeTime;

//带权周转时间

charstate;

//运行后的状态

structpcb*next;

}PCB;

//全局变量

intN;

//实际进程数

doubleSumWT;

//周转时间之和

doubleSumWWT;

//带权周转时间之和

doubleAverageWT;

//平均周转时间

doubleAverageWWT;

//平均带权周转时间

typedefstruct//定义队列,封装头结点,指针分别指向队头和队尾

PCB*front,*rear;

}queue;

queue*init()//进程队列置空

queue*head;

head=(queue*)malloc(sizeof(queue));

head->

front=NULL;

rear=NULL;

returnhead;

intempty(queue*head)//检验队列是否为空

return(head->

front?

0:

1);

queue*append(queue*head,charc[MaxNum],inta,intr,chars)//进程队列入队,往后插入

PCB*p;

p=(PCB*)malloc(sizeof(PCB));

strcpy(p->

Name,c);

p->

arrivetime=a;

runtime=r;

wholetime=r;

state=s;

//p->

FinishTime=0;

WeightTime=0;

WeightWholeTime=0;

next=NULL;

if(empty(head))

head->

front=head->

rear=p;

else

rear->

next=p;

queue*creat(queue*head)//创建进程队列

charc[MaxNum];

chars='

R'

;

inta,r,i;

printf("

请输入共有几个进程:

scanf("

N);

for(i=1;

=N;

请输入第%d个进程的进程名:

i);

getchar();

gets(c);

请输入第%d个进程的到达时间:

a);

请输入第%d个进程的服务时间:

r);

head=append(head,c,a,r,s);

voidprint(queue*head)//输入创建的进程队列

p=head->

front;

if(!

p)

时间片轮转调度队列为空!

while(p)

Name=%sarrivetime=%druntime=%dstate=%c"

p->

Name,p->

arrivetime,p->

runtime,p->

state);

p=p->

next;

/*******************时间片轮转法调度算法的实现**************************/

voidRR(qu

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1