非抢占式高优先级调度算法[共五篇]

时间:2019-05-15 01:58:27下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《非抢占式高优先级调度算法》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《非抢占式高优先级调度算法》。

第一篇:非抢占式高优先级调度算法

/* 非抢占式高优先级调度算法(优先数越大级别越高)

算法思想:在按进程达到时间由小到大的顺序输入进程信息后,先对其优先数进行排列,将最先到达的进程的到达时间设为开始时间,计算结束时间,然后对后面到达的时间与该进程的结束时间进行比较,如若小于该进程的结束时间,记录进程的个数,再对其优先数逐个进行比较,将优

先数最大的提到前面,每次进程结束都要进行比较,得到执行序列,在依次输出结果 */ #include #define MAX 100 struct hrfs { char name[10];float arrvitetime;float starttime;float servietime;float finishtime;int priority;//优先数

int order;//进程执行次序

int run_flag;//标记进程状态 };

hrfs p[MAX];int count;//排列到达时间

//按到达时间与优先数计算执行序列 void HRfs(){ float temp_time=0;int i=0,j;int k,temp_count;int max_priority;max_priority=p[i].priority;j=1;while((j

if(p[j].priority>p[i].priority){

max_priority=p[j].priority;

i=j;

}

j++;} k=i;p[k].starttime=p[k].arrvitetime;//开始时间=达到时间

p[k].finishtime=p[k].starttime+p[k].servietime;p[k].run_flag=1;temp_time=p[k].finishtime;p[k].order=1;temp_count=1;while(temp_count

max_priority=0;

for(j=0;j

//判断到达时间是否小于上一个进程的结束时间并且非处在运行状态

if((p[j].arrvitetime<=temp_time)&&(!p[j].run_flag))

//判断进程优先数是否大于最大优先数,如果大于,就将其值赋给max_priority

if(p[j].priority>max_priority){

max_priority=p[j].priority;

k=j;

}

}

p[k].starttime=temp_time;

p[k].finishtime=p[k].starttime+p[k].servietime;

p[k].run_flag=1;

temp_time=p[k].finishtime;

temp_count++;

p[k].order=temp_count;} }

void input(){ int i;printf(“n请输入进程名 到达时间 运行时间 优先数,例如:a 0 100 1n”);for(i=0;i

printf(“进程%d的信息:”,i+1);

scanf(“%s%f%f%d”,p[i].name,&p[i].arrvitetime,&p[i].servietime,&p[i].priority);

p[i].starttime=0;

p[i].finishtime=0;

p[i].order=0;

p[i].run_flag=0;} } void print(){ int i;float turn_round_time=0,f1,w=0;float right_turn_round_time;printf(“n进程完成信息-----n”);printf(“进程名 优先级 达到时间 运行时间 开始时间 结束时间

周转时间 带权周转时间 运行次序n”);for(i=0;i

f1=p[i].finishtime-p[i].arrvitetime;

turn_round_time+=f1;

right_turn_round_time=f1/p[i].servietime;

w+=(f1/p[i].servietime);

printf(“%s %5d %10.2f %8.2f %8.2f %8.2f %8.2f %8.2f %8dn”,p[i].name,p[i].priority,p[i].arrvitetime,p[i].servietime,p[i].starttime,p[i].finishtime,f1,right_turn_round_time,p[i].order);} printf(“平均周转时间=%5.2fn”,turn_round_time/count);printf(“平均带权周转时间=%5.2fn”,w/count);}

void main(){ printf(“---------------------------非抢占式高优先级调度算法----------------------------n”);printf(“进程个数:”);scanf(“%d”,&count);input();HRfs();

print();}

下载非抢占式高优先级调度算法[共五篇]word格式文档
下载非抢占式高优先级调度算法[共五篇].doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐