- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
并行计算机体系结构多进程多处理机实现资源分配
多处理机调度、资源分配
学号: 姓名:
一.实验目的:首先实现多处理机调度,然后在某个处理机里实现多进程调度。
二:资源分配
负载平衡与任务分配/调度密切相关,任务分配通常有静态的和动态的两种方法。
静态分配一般是任务到进程的算术映射。静态分配的优点是没有运行时任务管理的开销,但为了实现负载平衡,要求不同任务的工作量和处理器的性能是可以预测的并且拥有足够的可供分配的任务。
动态分配就相对灵活,可以运行时在不同处理器间动态地进行负载的调整。
三:调度
任务调度通常也有静态和动态两种。
静态调度
静态调度方案一般是静态地为每个处理器分配[N/p]个连续的循环迭代,其中N为迭代次数,p是处理器数。除了在所有的循环迭代计算时间和每个处理器的计算能力都相同的同构情况下外,这种静态调度的方案总会引起负载的不平衡。另一方面,静态调度方案也可以采用轮转(Round-robin)的方式来给处理器分配任务,即将第i个循环迭代分配给第i mod p个处理器。这种方案可以部分地解决应用程序本身负载不平衡的情况,如LU分解的执行时间随着循环变量i的增长而减少。然而,采用轮转方式可能会导致高速缓存命中率降低。
动态调度
尽管动态调度技术通常可以取得较好的负载平衡的效果,但开销也很大。因此,如果静态高度技术有较好的负载平衡效果,就尽量采用静态调度技术。而在元计算环境下,一般动态调度有较好的效果。
四:单处理器多进程调度
调度任务之间的切换由任务优先级决定,低优先级任务不能抢占高优先级任务,只有高优先级任务进入阻塞状态,低优先级任务才有机会运行。
任务由OS根据任务的优先级和任务当前所处的状态(就绪、阻塞、运行)进行调度,调度任务从任务控制块和进程控制块中获得调度进程运行时所需的有关数据。进程也有三种运行状态:就绪态、阻塞态、运行态。因此每个调度任务就有三个队列:就绪进程队列、阻塞进程队列、运行进程队列,这三个队列分别用来指示该调度任务下处于不同运行状态的进程。它的状态在消息激励下可以相互转换,如图2所示。
图1单处理器任务和进程关系
当一个调度任务被os调度运行后,该任务将从其所操作的os消息队列上获得消息,并把取到的消息指派给相应的进程,同时把阻塞且获得消息的进程放到任务的进程就绪队列尾部,然后开始循环调度进程的执行。调度任务每次调度进程就绪队列中的第一个进程,当将被调度的进程是由于同步消息已经应答或延时已经到时而被唤醒时,调度任务将控制转移到保存在进程堆栈中的指令地址;否则,如果进程消息队列头上的是一条新消息,调度任务依据进程消息队列头上的消息和PCB中的数据为进程的主处理函数传递相应入口参数,并从主处理函数的第一条语句开始执行。
图3单处理器调度进程示意图
在图3中,在派发消息链表中的消息时:
??? (1)如果接收消息的进程处在阻塞状态,且此时不是在等待同步应答,消息将成为进程PCB消息队列的当前消息,该进程PCB将从阻塞队列进入就绪队列尾;若此时在等待同步应答,则仅将该消息添加到进程PCB消息队列尾。
??? (2)如果接收消息的进程已经在就绪状态,则将该消息添加到进程PCB消息队列尾。
??? (3)如果待分发的消息是同步定时器超时消息或同步应答消息,那么此消息不进入进程PCB的消息队列,直接把该PCB从阻塞队列中挂到就绪队列头。?????
五:多处理机多进程调度
我们采用耦合调度(AS)策略实现多处理机多进程调度。
由于耦合调度采用了分布式的任务队列,同时充分地考虑了处理器和数据之间的耦合关系。我们把AS的调度过程分为三步:
①初始化阶段:将一个有N个循环迭代的循环分成p块,每块大小为[N/p] ,第i块就分配给第i个处理器的某个调度任务的就绪队列,然后进入运行队列(如图1);
②)本地调度阶段:每个处理器从自己的局部任务队列中取出剩下循环迭代数量的1/k,一般推荐k的值等于p;
③远程调度阶段:当某个处理器自己的局部任务队列为空时,它就找到最忙的处理器,并从该处理器的非运行任务队列中取走剩下任务的[1/p] ,然后放到自己的某个进程的就绪队列,并调度到运行队列(如图1);
六:过程总结
采用耦合调度(AS)策略首先实现多处理机调度,当调度到某个特定的处理机后,再在单个处理机里实现多进程调度。也就是说,一个处理机有M个进程,而N个处理机有N*M个进程。
文档评论(0)