turnaround

更新时间:2022-12-27 04:02:14 阅读: 评论:0


2022年12月27日发(作者:安徽大学教务处)

【操作系统进程调度】⽤C语⾔简单实现最⾼优先数优先算法

⼀,实验⽬的

⽤C语⾔编写⼀个进程调度程序,加深对进程概念与进程调度算法的理解

⼆,实验设备

计算机

三,实验原理

四,实验步骤

#include

typedefstructProcess

{

inttimeOfArrival;//到达时间

intpriority;//优先级

intduration;//CPU振发时间

intid;//进程ID

intcount;//剩余运⾏时间

intstart;//开始时间

intfinish;//结束时间

intturnaround;//周转时间

doublewTurnaround;//带权周转时间

}Process;

intmain(intargc,charconst*argv[])

{

//进程数组

Processt[]={

{0,0,8},

{2,1,5},

{4,3,7},

{0,2,3},

{5,7,2},

};

intsize=sizeof(t)/sizeof(Process);

inttime=0;

for(size_ti=0;i

{

t[i].start=-1;

t[i].id=i;

t[i].count=t[i].duration;

}

while(1)

{

Process*process=NULL;

intisAlive=0;

//选择这个时间⽚要调⽤的进程

for(size_ti=0;i

{

Process*p=&t[i];

if(p->duration>0)

{

isAlive=1;

if(p->timeOfArrival<=time)

if(p->timeOfArrival<=time)

process=process==NULL?p:(p->priority>process->priority?p:process);

}

}

if(!isAlive)

break;

printf("[%d]",process->id);

//进程⾸次被调⽤记录开始时间

if(process->start==-1)

process->start=time;

process->duration--;

time++;

//当进程结束时计算相应数据

if(process->duration==0)

{

process->finish=time;

process->turnaround=process->finish-process->timeOfArrival;

process->wTurnaround=(double)process->turnaround/(double)process->count;

}

}

doubleaTurnaround=0;

doubleaWTurnaround=0;

for(size_ti=0;i

{

printf("nID:[%d]t开始时间:[%d]t结束时间:[%d]t周转时间:[%d]t带权周转时间:[%.2lf]",

t[i].id,t[i].start,t[i].finish,t[i].turnaround,t[i].wTurnaround);

aTurnaround+=t[i].turnaround;

aWTurnaround+=t[i].wTurnaround;

}

aTurnaround/=size;

aWTurnaround/=size;

printf("n平均周转时间:[%.2lf]t平均带权周转时间:[%.2lf]",aTurnaround,aWTurnaround);

return0;

}

六,实验结果

这⾥是最后输出的结果

七,实验总结

本文发布于:2022-12-27 04:02:14,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/90/37979.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

下一篇:strengthening
标签:turnaround
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图