c语言实现任务调度

c语言实现任务调度

ID:11144072

大小:44.50 KB

页数:6页

时间:2018-07-10

c语言实现任务调度_第1页
c语言实现任务调度_第2页
c语言实现任务调度_第3页
c语言实现任务调度_第4页
c语言实现任务调度_第5页
资源描述:

《c语言实现任务调度》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、任务调度①问题描述多用户多任务操作系统中,多个任务同时共享计算机系统资源。为了使多个任务均能够顺利执行,操作系统要按一定的原则对它们进行调度,使它们按一定的次序进行。设只有一个CPU,现有多个任务,它们需要CPU服务的时间已知。在下列假设下,按平均等待时间最短为原则,设计算法求出任务的执行顺序。l忽略任务提交的时间差,即认为各任务同时提交。l各任务不同时提交。②基本要求l为任务列表设计数据结构和存储结构。l任务输入,至少包括任务编号及所需CPU的服务时间,任务数不得少于5个。l如果按提交顺序执行,求出每个任务的开始执行时间、终止时间、等待时间和所有任务的平均等待时间。l按平均

2、等待时间最短,设计任务调度算法,输出任务的执行序列;求出每个任务的开始执行时间、终止时间、等待时间和所有任务的平均等待时间;并把结果与上一时间对比。③设计要点提示l为使各任务平均等待时间最短,如果忽略任务提交的时间差,调度时应该按短任务优先进行调度,即:按照各任务需要CPU服务时间的长短,确定执行顺序,短的在前,长的在后。例:任务列表2如下,则执行序列如表3所示。表2任务列表任务所需CPU时间(s)任务所需CPU时间(s)P18P59P24P620P312P715P45表3任务执行序列任务所需CPU时间(s)等待时间结束时间开始时间P14040P25494P389179P49

3、172617P512263826P615385338P720537353l根据上一问题的分析,需要根据任务列表,按任务的CPU服务时间进行排序。l如果考虑任务提交的时间差,应该按“最短剩余时间”优先进行调度。调度发生在每次任务提交时,从未完成任务中选择需要CPU时间最短的任务。例:任务提交情况如表4所示。表4任务列表任务提交时刻所需CPU时间(s)任务提交时刻所需CPU时间(s)P108P549P214P6520P3212P7615P4350时刻,只有P1,所以运行P1。1s时,P2提交,此时,P2需要CPU服务时间为4,P1还需7,则暂停P1,先运行P2。2s时,P3提交,

4、此时,P1、P2、P3各自需CPU服务时间为:7、3、12,所以继续运行P2。依次类推,直至所有任务完成。#include#include#defineMAXNUM100typedefstructNode1{intname;inttime;intgettime;structNode1*next;}Lnode1;voidwaitlest(Lnode1*p){Lnode1*q,*head;inta,wt,st,ft;wt=0;st=0;ft=0;printf("任务所需CPU时间(s)等待时间结束时间开始时间");head=p;while

5、(head->next){q=head;p=q->next;while(p->next){q=q->next;p=p->next;if(q->timetime){a=q->name;q->name=p->name;p->name=a;a=q->time;q->time=p->time;p->time=a;}}printf("%d",p->name);printf("%10d",p->time);wt=ft;st=wt;ft=ft+p->time;printf("%10d",wt);printf("%10d",ft);printf("%10d",st);printf("

6、");q->next=NULL;free(p);}}voidshijiancha(Lnode1*p){Lnode1*first,*head,*q,*r;inta,n,t;printf("任务");first=p;p=first->next;n=p->gettime;q=(Lnode1*)malloc(sizeof(structNode1));head=q;while(p){r=(Lnode1*)malloc(sizeof(structNode1));q->next=r;q=q->next;q->next=NULL;q->name=p->name;q->time=p->

7、time;q->gettime=p->gettime;r=head->next;if(r->next){if(r->next->next){q=r->next;while(q->next){if(r->time>q->time){a=r->name;r->name=q->name;q->name=a;a=r->time;r->time=q->time;q->time=a;}q=q->next;r=r->next;}//endwhileqn}//endifrnn}//endifrnif(head->nex

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。