教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 高等教育 >

操作系统fcfs和sjf及hrn算法(2)

来源:网络收集 时间:2026-08-26
导读: L=Insert_LinkList(L,i,q);//在链表L的第i个位置插入q结点 L=Del_LinkList(L,j+1); //删除原来位置的q结点 } } } printf2(L); } printf(\n); if(Get_LinkList(L,i)-tat)//如果这个程序到达时间大于当前时间,完成时

L=Insert_LinkList(L,i,q);//在链表L的第i个位置插入q结点 L=Del_LinkList(L,j+1); //删除原来位置的q结点

}

}

}

printf2(L);

}

printf("\n");

if(Get_LinkList(L,i)->ta>t)//如果这个程序到达时间大于当前时间,完成时间=这个程序的到达时间+这个程序的服务时间

{t=Get_LinkList(L,i)->ta+Get_LinkList(L,i)->tf;}

else if(Get_LinkList(L,i)->ta<=t)//如果这个程序的到达时间小于或等于当前时间,完成时间=当前时间+这个程序的服务时间

{t=t+Get_LinkList(L,i)->tf;}

Get_LinkList(L,i)->zhout=t-Get_LinkList(L,i)->ta;//周转时间=完成时间-到达时间

Get_LinkList(L,i)->quan_zhout=(float)Get_LinkList(L,i)->zhout/Get_LinkList(L,i)->tf;//带权周转时间=周转时间/服务时间//转化为浮点型,

//Get_LinkList(L,i)->zhout=Get_LinkList(L,i)->zhout;Get_LinkList(L,i)->quan_zhout=Get_LinkList(L,i)->quan_zhout;//调试内容

}

return L;

}

将操作系统涉及的先到先服务,短作业优先,最高响应比 这三者的算法集中在这一个程序里。

//单链表的排序,第一次是短作业优先、其次是按优先权大的前,相等再比是短作业优先 LinkList hrn_LinkList(LinkList L)

{

LNode *p,*q,*w;

LNode *x=L;

int i,j;

int t=0;

for( i=0;i<(Length_LinkList(L));i++)

{

if(min_ta(L,i)>t)//每执行一个程序前,判断前一个程序完成后是否有时间空隙,如果有,当前时间改为为完成的程序中最小的到达时间

t=min_ta(L,i);

printf("当前时间:t=%d ",t); init_quan(L,t);//初始化每个节点的权值 printf("当前权值:"); w=x; while(w) { if(w->quan>=1) printf("%c=%4.2f ",w->pid,w->quan); w=w->next; } printf("\n"); printf("i=%d ",i); for(j=i+1;j<Length_LinkList(L);j++) {

init_quan(L,t);//初始化每个节点的权值

printf("j=%d ",j);

p=Get_LinkList(L, i);

q=Get_LinkList(L, j);

i=i;j=j;q->quan=q->quan;p->quan=p->quan;

if(q->quan>p->quan)

{

L=Insert_LinkList(L,i,q);

L=Del_LinkList(L,j+1);

}

if(q->quan==p->quan)

{

if(q->tf<p->tf)

{

L=Insert_LinkList(L,i,q);

L=Del_LinkList(L,j+1);

}

将操作系统涉及的先到先服务,短作业优先,最高响应比 这三者的算法集中在这一个程序里。

}

}

printf("\n");

if(Get_LinkList(L,i)->ta>t)

{t=Get_LinkList(L,i)->ta+Get_LinkList(L,i)->tf;}

else if(Get_LinkList(L,i)->ta<=t)

{t=t+Get_LinkList(L,i)->tf;}

printf("程序%c在t=%d时到达执行需

\n",Get_LinkList(L,i)->pid,Get_LinkList(L,i)->ta,Get_LinkList(L,i)->tf);

for(int l=Get_LinkList(L,i)->tf;l>0;l--)

{

printf("程序%c正在执行还需%d秒\n",Get_LinkList(L,i)->pid,l);

Sleep(1000);

} 要%d秒

printf("程序%c到达执行结束\n",Get_LinkList(L,i)->pid);

x=Get_LinkList(L,i)->next;

Get_LinkList(L,i)->zhout=t-Get_LinkList(L,i)->ta;

Get_LinkList(L,i)->quan_zhout=(float)(Get_LinkList(L,i)->zhout)/(float)Get_LinkList(L,i)->tf; printf("%c的周转时间为:%d 带权周转时间为:%4.2f\n",Get_LinkList(L,i)->pid,Get_LinkList(L,i)->zhout,Get_LinkList(L,i)->quan_zhout);

}

float sum_quan;

sum_quan=0;

for(i=0;i<Length_LinkList(L);i++)

{

sum_quan=Get_LinkList(L,i)->zhout+sum_quan;

}

printf("平均周转时间为:%4.2f \n",sum_quan/Length_LinkList(L));

sum_quan=0;

for(i=0;i<Length_LinkList(L);i++)

{

sum_quan=Get_LinkList(L,i)->quan_zhout+sum_quan;

}

printf("平均带权周转时间为:%4.2f \n",sum_quan/Length_LinkList(L));

return L;

}

void main()

{

LinkList H;

printf("创建链表H\n");

H=Create_LinkList();

将操作系统涉及的先到先服务,短作业优先,最高响应比 这三者的算法集中在这一个程序里。

printf("当前链表为:"); printf2(H); printf("\n先来先服务(FSC)算法:\n"); H=fcs_LinkList(H); printf(H); printf("当前链表为:"); printf2(H);

printf("\n短作业优先(SJF)算法:\n"); H=sjf_LinkList(H);

printf(H);

printf("当前链表为:");

printf2(H);

printf("\n高响应比优先(HRN)算法:\n"); hrn_LinkList(H);

}

…… 此处隐藏:926字,全部文档内容请下载后查看。喜欢就下载吧 ……
操作系统fcfs和sjf及hrn算法(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/126239.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)