时间片轮转、最高响应比优先调度算法(2)

2025-07-27

if(m==0)

p[m].finishtime=p[m].arrivetime+p[m].servicetime; else

p[m].finishtime=p[m-1].finishtime+p[m].servicetime; int i=0,n;

for(n=m+1;n<=N-1;n++) {

if(p[n].arrivetime<=p[m].finishtime) i++; }

float max=(p[m].finishtime-p[m+1].arrivetime)/p[m+1].servicetime;//第m+1个的响应比

int follow=m+1;

for(int k=m+1;k

if(max<=(p[m].finishtime-p[k+1].arrivetime)/p[k+1].servicetime) {

max=(p[m].finishtime-p[k+1].arrivetime)/p[k+1].servicetime; follow=k+1; } }

zgxyb temp; temp=p[m+1]; p[m+1]=p[follow]; p[follow]=temp; }

deal(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N); Print(p,arrivetime,servicetime,starttime,finishtime,zztime,dqzztime,N); }

linklist creatlinklist() {

linklist head,r,s; int x,y;

char ch[10];//因为要输的是字符串

head=r=(linklist)malloc(sizeof(linknode));

printf(\请输入一组编号,作业名,运行时间,以结尾\\n\);

6

scanf(\,&x,&ch,&y);

while (x) {

int a =10;

s=(linklist)malloc(sizeof(linknode)); s->Num=x; s->runtime=y;

//strcpy(s->Name,ch);//直接字符串复制

}

r->next=s; r=s;

scanf(\,&x,&ch,&y); }

r->next=NULL; return head; }

/*输出带头结点的单链表*/ void print(linklist head) {

linklist p; p=head->next; printf(\);

printf(\); while(p) {

printf(\,p->Num,p->Name,p->runtime); p=p->next; }

printf(\); }

void main() {int G; scanf(\,&G);

for(int i=0;i

s->Name[i]=ch[i];

7

if(G==1){

linklist head,pre,p,r;

int t,i;

head=creatlinklist(); print(head);

printf(\请输入runtime:\); scanf(\,&t); pre=head;

p=head->next; while(p) {

}

if (p->runtime>t)/*如果运行时间大于时间片*/ { } else {

pre->next=p->next;/*如果进程运行时间小于时间片,就将第一个进程删除*/ free(p); p=head->next; i=1;

while(p)/*因为删了一个进程就需要重新从开始设置一遍进程的排列序号*/ { }

p->Num=i++; p=p->next; r=p->next;

p->runtime=p->runtime-t;/*将第一个进程的运行时间减去一个时间片的时间*/

while(r->next)/*将r指向链表的最后一个结点以便用尾插法将P结点插入到链表的最后*/ { }

pre->next=p->next; p->next=NULL; r->next=p; p=head->next; i=1;

while(p)/*将进程的序号重新从开始设置一遍*/ { }

p->Num=i++; p=p->next; r=r->next;

8

}

else{int N;

printf(\高响应比调度算法------\\n\); printf(\); scanf(\,&N); input(a,N);

zgxyb *c=a; ZGXYB(c,N); } }

}

print(head);/*打印进程列表*/ pre=head; p=head->next;

4. 运行结果与运行情况分析

程序的第一步选择最高响应比调度算法,输入进程输入3个, 进程名字 提交时间 运行时间 a 2 3 b 3 2 c 3 3 程序的验证: 第一个进程在2点提交,3个小时的执行时间,在2点没有别的进程,所以a先执行,5点执行完后,而在5点执行前,b,c都提交了,所以就要判断响应比,响应比是等待时间加上执行时间,除以执行时间,所以b的响应比是2,c的响应比是5/3,所以b的响应比高,b先执行,最后是c执行,周转时间是完成时间减去提交时间,而带权周转时间是周转时间除以执行时间。经检验,平均周转时间4.67,平均带权周转时间是1.67.,经检验,结果是正确的。

9

果是时间片轮转则运行结果为:

10


时间片轮转、最高响应比优先调度算法(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:关于印发《事业单位工作人员申诉规定》的通知人社部发〔2024〕45

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219