搜索

如果让你来设计一个调度算法你会考虑哪些因素

gecimao 发表于 2019-07-12 21:55 | 查看: | 回复:

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  作业调度,也被称为宏观调度或高级调度,其主要任务是选择在选定的作业的作业分配内存,输入和输出设备和其他必要的储备货币地位的某些原则的外部存储器资源,并建立一个过程,以使工作的过程中,以获得竞争处理器的权利。

  B?。进程调度,也被称为微调度或低级别的调度,其主要任务是根据一些策略和方法来选择一个在该准备状态的方法,该处理器被分配给它。

  B?。为提高系统吞吐量,系统的标准,处理器的利用率,对各种资源的平衡利用。

  对等动态优先权算法,进程调度过程掌握情况;考查学生的写算法和编程能力等;考查学生的分析问题和解决问题的能力;实验报告的撰写能力等。设计思路:(1)先对就绪队列,阻塞队列,cpu的进行初始化。(2)进行进程调度的选择。 1)cpu,就绪队列和阻塞队列中的进程数不为0。判断cpu是否空闲。 a.cpu空闲的话,从就绪队列中选取优先级最大的;而如果就绪队列为空,则从阻塞队列中选取第一个进程。选中的进程的cputime设置为0。 b.cpu上有进程,则更新cpu上进程的状态,打印cpu上进程的id。如果cpu上的进程的alltime已经为0,即进程已经完成了,更新该进程的状态为finish,将cpu清空。如果进程在cpu上的时间达到starttime,将其放到阻塞队列,清空cpu。 2)更新阻塞队列和就绪队列中的进程中的状态,打印就绪队列和阻塞队列的进程的id。 3)打印每个进程的状态。(3)重复上面的步骤,直到没有cpu,就绪队列,阻塞队列中都没有进程了。

  #include stdio.h #include malloc.h #include string.h typedef struct node{ int time; int name; char statement; int num; struct node *next; }node,*L; void createL(L &l,int n){ l=(L)malloc(sizeof(node)); if(!l) printf(error!); else l-next=NULL; L p,q; q=l; for(int i=0;iname); getchar(); printf(请输入该进程的运行时间time:n); scanf(%d,&p-time); printf(请输入其优先级数num:n); scanf(%d,&p-num); getchar(); printf(请输入其状态:n); p-statement=getchar(); p-next=q-next; q-next=p; q=p; getchar(); } } void traL(L p=l-next; printf(进程名t运行时间t优先数t状态n); while(p){ printf( %dt%5dt%11dt %c,p-name,p-time,p-num,p-statement); printf(n); p=p-next; } } void Sort(L &l) { L tail=NULL; while(tail!= l-next) { L pre = l; L cur = pre-next; while(cur != tail && cur-next != tail) { if( cur-num cur-next-num ) { pre-next = cur-next; cur-next = cur-next-next; pre-next-next = cur; } pre = pre-next; cur = pre-next; } tail = cur; } } void run(L &l){ Sort(l); L p,r,q; q=l; if(l-next!=NULL) p=l-next; int j=0; printf(第k次运行t进程名t运行时间t优先数t状态n); while(p!=NULL){ j++; printf(%5dt %dt%5dt%11dt %c,j,p-name,p-time,p-num,p-statement); printf(n); p-num--; p-time--; if(p-time==0){ p-statement=E; r=p; if(p-next!=NULL) { l-next=p-next; free(r); p=l-next; } else break; } else{ Sort(l); if(l-next!=NULL) p=l-next; else break; } } } void main(){ L l; int n; printf(请输入进程的数目n:n); scanf(%d, createL(l,n); traL(l); run(l); } //这是运行过的,应该符合你的要求!

  展开全部对等动态优先权算法,进程调度过程掌握情况;考查学生的写算法和编程能力等;考查学生的分析问题和解决问题的能力;实验报告的撰写能力等。

  a.cpu空闲的话,从就绪队列中选取优先级最大的;而如果就绪队列为空,则从阻塞队列中选取第一个进程。选中的进程的cputime设置为0。

  b.cpu上有进程,则更新cpu上进程的状态,打印cpu上进程的id。如果cpu上的进程的alltime已经为0,即进程已经完成了,更新该进程的状态为finish,将cpu清空。如果进程在cpu上的时间达到starttime,将其放到阻塞队列,清空cpu。

  2)更新阻塞队列和就绪队列中的进程中的状态,打印就绪队列和阻塞队列的进程的id。

  2019-04-07展开全部对等动态优先权算法,进程调度过程掌握情况;考查学生的写算法和编程能力等;考查学生的分析问题和解决问题的能力;实验报告的撰写能力等。

  a.cpu空闲的话,从就绪队列中选取优先级最大的;而如果就绪队列为空,则从阻塞队列中选取第一个进程。选中的进程的cputime设置为0。

  b.cpu上有进程,则更新cpu上进程的状态,打印cpu上进程的id。如果cpu上的进程的alltime已经为0,即进程已经完成了,更新该进程的状态为finish,将cpu清空。如果进程在cpu上的时间达到starttime,将其放到阻塞队列,清空cpu。

  2)更新阻塞队列和就绪队列中的进程中的状态,打印就绪队列和阻塞队列的进程的id。

本文链接:http://olivierlutaud.net/diaodusuanfa/708.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部