高级操作系统AdvancedOperatingSystemppt课件.ppt
《高级操作系统AdvancedOperatingSystemppt课件.ppt》由会员分享,可在线阅读,更多相关《高级操作系统AdvancedOperatingSystemppt课件.ppt(115页珍藏版)》请在三一办公上搜索。
1、高级操作系统Advanced Operating System,熊焰0551-63600689中国科学技术大学计算机学院,第四章 分布式进程和处理机管理,分布式系统模型分布式处理机分配算法分布式进程调度分布式系统容错实时分布式系统,3.2 分布式处理机分配算法,处理机分配的理由:分布式系统包括多个处理机,具有较大的分布处理能力。另外,一个作业将产生多个任务或进程,它们需要分配在多个处理机上并行执行,以充分利用分布式系统提供的巨大处理能力。因此,分布式系统需要一个良好的处理机分配算法来决定每个进程或任务应分配到哪一个处理机上执行通常,这个算法被称为处理机分配算法或任务分配算法(通常不称作进程分配
2、算法,尽管但两者的意思完全相同)。,3.2分布式处理机分配算法,处理机分配的基本模型、假定和目标:1)关于处理器:假定所有的机器都是相同的,至少是代码兼容的,不同的只是运行速度。有些还假定系统具有多个互不相关的处理机池,每一个处理机池都是相同的。,3.2分布式处理机分配算法,2)关于互连拓扑:假定系统是完全互连的,即每一个处理机都可以与其它任意一个处理机通信。这并不表示每一个机器与其它任意一台机器之间都有线路直接连接,这个假定只是意味着每一对机器都可以互相通信。至于消息是如何从一台机器到达另一台机器的问题只是低层通信软件的事,处理机分配算法无需考虑。但有一些处理机分配算法利用了网络的广播或者多
3、播的特性。,3.2分布式处理机分配算法,新进程的产生和处理机的分配:当一个运行中的进程决定创建一个子进程时,产生了下列工作:在有些情况下,创建进程是由系统的命令解释程序(即shell)来完成的。它为用户执行其指定的命令所对应的程序。而在另一些情况下,用户进程本身也可以创建一个或者多个子进程,以获得较高的系统性能。对新进程必须考虑分配到哪个处理器上运行,3.2分布式处理机分配算法,处理机分配策略可以分为两大类:1)非迁移的2)可迁移的第一类是非迁移的(nonmigratory)在非迁移策略中,当创建一个进程时,系统就决定它被分配到哪台处理机上。一旦一个进程被分配到一台机器上,那么,它就在那台机器
4、上运行,一直到终止,不管这台处理机的负载是多么的重,而别的处理机是多么的空闲,它都不能迁移到别的处理机上运行。,3.2分布式处理机分配算法,第二类是可迁移的(migratory)对于可迁移策略来说,一个进程即使已经被分配到一台处理机上并已经运行了一段时间,如果其负载变重了,它也可以动态地迁移到其它轻负载的处理机上继续运行。虽然可迁移策略可以使系统达到良好的负载平衡,但实现起来却异常复杂。,3.2分布式处理机分配算法,处理机分配算法必须尽可能优化。否则,我们完全可以随机地或按数字顺序来分配处理机。不同系统的优化内容是不一样的优化目标1:提高处理机利用率优化目标2:最小化平均响应时间,3.2分布式
5、处理机分配算法,第一个优化目标就是:尽量提高处理机的利用率让处理机在每个小时内执行用户工作的周期数尽可能地大换句话说,要尽量减少空闲处理机周期数。,3.2分布式处理机分配算法,第二个有价值的优化目标就是:使平均响应时间最小化,3.2分布式处理机分配算法,举例:假设有两个处理机。处理机1以10MIPS的速度运行,处理机2以100MIPS的速度运行,其中等待队列中的进程需要5秒才能完成。有两个进程。进程A有1亿条指令,执行时间分别为10秒(在处理机1上)和1秒(在处理机2上)进程B有3亿条指令,执行时间分别为30秒和3秒,3.2分布式处理机分配算法,这两个进程在每一个处理机上的响应时间(包括等待时
6、间)如图所示。,5+1=,5+3=,3.2分布式处理机分配算法,平均响应时间:如果把进程A和B分别分配给处理机1和2,那么平均响应时间是(10+8)/2=9秒。若反向分配,那么平均响应时间就是(30+6)/2=18秒。显然,前者的平均响应时间要比后者小。,3.2分布式处理机分配算法,最小响应时间的另一种形式就是最小响应率。响应率定义为:在一台机器上运行一个进程所需的时间除以该进程在无负载的标准处理机上运行所需的时间。,3.2分布式处理机分配算法,对于大多数用户来说,响应率比响应时间更重要。其原因是:考虑了大任务要比小任务花费更多时间这一情况。例如:一个1秒的任务花了5秒,而一个1分钟的任务花了
7、70秒,从响应时间上看,前者好,但从响应率上看,后者更好,因为5/170/60。,3.2分布式处理机分配算法,考虑负载的分配方法:局部和全局 局部负载分配处理单个处理器上的进程对时间片(单元)的分配。全局负载分配首先进行进程对处理器的分配,然后完成每个处理器内这些进程的局部调度。静态和动态(在全局类中)静态负载分配中,进程对处理器的分配是在进程执行以前的编译阶段完成的,而动态负载分配要到进程在系统中执行时才做出分配。静态方法又叫做确定性调度,而动态方法叫做负载平衡。,3.2分布式处理机分配算法,最优和次优(在静态和动态两种类型中)如果根据某种标准(例如,最小执行时间和最大系统输出)可以取得最优
8、分配,那么就可以认为这种负载分配方法是最优的。一般地,负载分配问题是NP完全问题。某些情况下,次优方案(神经网络方法)也是可以接受的。有四类算法(对于最优的和次优的)被使用:1)解空间枚举搜索、2)图模型、3)数学编程(例如0/1规划)4)队列模型,3.2分布式处理机分配算法,近似和启发式(在次优类型中)在近似方法中,负载分配算法仅搜索一个解空间的子集,当寻找到一个好的解时,终止执行 在启发式方法中,调度算法使用某些特殊参数,能够近似地对真实系统建模。,3.2分布式处理机分配算法,集中控制的和分散控制的(在动态类型中)在分散控制中,分配决策工作被分配给不同的处理器。在集中控制中,分配决策工作由
9、一个处理器完成。协作的和非协作的(对分散控制)动态负载分配机制可以分成:协作的(分布式对象间有协同操作)和非协作的(处理器独立做出决策)。,3.2分布式处理机分配算法,下图显示了上述负载分配算法的分类情况,3.2分布式处理机分配算法,其他负载分配算法的分类方法:单个和多个应用程序 多数负载分配算法是针对单个应用程序。多应用程序情况可以转换成单个应用程序情况。例如,应用图模型时对多应用程序的多个图可以认为是一张图。然而,多应用程序情况下的进程分配远复杂于单个应用程序的情况。多应用程序情况下用平均子图完成时间作为衡量指标,单个应用程序情况下用最小完成时间作为衡量指标。,3.2分布式处理机分配算法,
10、非抢占式的和抢占式的 对非抢占式的负载分配算法,一个任务(进程)开始执行后就不能中断。在抢占式负载分配算法中,进程可以中断,并从处理器上移走,以后继续执行。非自适应的和自适应的 非自适应负载分配只使用一种负载分配算法,不会依据系统反馈而改变白己的行为。自适应负载分配能够根据系统反馈调整分配算法。典型地,一个自适应负载分配算法是许多负载分配算法的集合,依据系统的各种参数来选择一个合适的算法。,3.2分布式处理机分配算法,一般来说,设计者在设计算法时,需要考虑以下五个方面的情况:算法是确定式还是启发式的。算法是集中式的还是分布式的。算法是最优的还是次优的。算法是局部的还是全局的。算法是过载者启动的
11、还是欠载者启动的。,3.2分布式处理机分配算法,确定式算法需要预先知道进程所有的信息:一般,进程的信息包括:进程的计算需求文件需求通讯需求等等如果设计者能够获得所有进程的信息,那就可以设计出一个完美的分配方案,并获得最佳的分配结果。但只有极少的一些系统可以事先获得所有进程的信息。,3.2分布式处理机分配算法,可预测系统 vs 不可预测系统在可预测系统中,可以通过合理的近似来事先得到所有进程的信息。例如,在银行业、保险业、民航定票系统中,每天的情况都基本相似,民航根据经验可以预测到早春第一周周一的清晨大约有多少人要从纽约去芝加哥,这样就保证了确定式算法的可行性。与可预测系统相反,有些系统的负载是
12、完全无法预测的。用户所做的工作每一个小时,甚至每一分钟都在动态地改变。在这种系统中的处理机分配不能用一种在数学上确定的算法实现,而需要,3.2分布式处理机分配算法,使用一种称之为启发式的算法。集中式算法需要将系统中所有的信息都收集到某个机器上,这会造成系统不够坚定,并且该机器负载过于沉重。因此,一般都采用分布式算法来实现处理机分配。然而,一些集中式算法仍然被采用,原因是没有相应的分布式算法来取代它。,3.2分布式处理机分配算法,第三个设计问题与前两个问题有关,是获得一个最优解?还是一个可行的次优解?一般来说,采用集中式和分布式算法都能够得到最优解,但得到最优解所花费的代价要比得到次优解复杂得多
13、。此外,最优解需要收集更多的信息以及进行全面复杂的处理。对于大多数分布式系统来说,只要有一个启发、分布、次优的处理机分配算法就可以了。因为,要获得最优解实在是太难了。,3.2分布式处理机分配算法,第四个设计问题与迁移策略有关:当一个新进程被创建时,系统需要决定它是否在创建它的机器上运行。若该机器繁忙,那这个新进程就必须迁移到其它机器上去运行。对于是根据本机局部信息还是全局信息来决定新进程是否迁移,目前存在着两种学派。1)一种学派主张简单的局部算法:若机器的负载低于某个阀值,那新进程就在本地机器上运行;否则,就不允许该进程在本地上运行。2)另一种学派认为局部算法太武断了。最好在决定新进程是否在本
14、地机器上执行之前,先收集,3.2分布式处理机分配算法,其它一些机器上的负载信息。比较:局部算法简单,但远远达不到最优;而全局算法需要付出巨大的代价来换取一个性能稍微好一点的结果。,3.2分布式处理机分配算法,最后一个设计问题与迁移的目的机器有关。一旦决定不允许一个进程在本地机器上运行,那么,迁移算法就必须决定将该进程应该迁移到一台目的机器上。显然,迁移算法不能是本地的。它需要通过获得其它机器上的负载信息来决定迁移的目的机器。这些负载信息可以通过两种途径来获得。过载者启动。欠载者启动。,3.2分布式处理机分配算法,过载者启动:由过载者来寻找迁移的目的机器如图:一个机器超载时,它向其它机器发送求助
15、请求,希望将自己的一些新进程迁移到其它机器上运行。欠载者启动:当一个机器处于空闲状态即欠载状态时,由这台欠载机器来宣布自己可以接收外来的工作。其的目的就是寻找一台可以给自己增加一些额外工作的机器,3.2分布式处理机分配算法,不管是过载者启动的算法还是欠载者启动的算法,不同的算法要采用不同的策略来决定谁收集信息、收集时间多长以及如何处理收集的信息。通常,所有的算法都假定每一台机器都知道它自己的负载,也就是说,它可以判断自己是超载还是欠载,并且能够告诉其它机器自己的负载。然而,度量一台机器是否超载并不象它看上去那样简单。,3.2分布式处理机分配算法,负载度量方法1:以机器上的进程数量作为机器的负载
16、。优点:简单原因:只需要计算机器上的进程数量缺点:用进程数量的多少来表示机器的负载是不确切的,它几乎说明不了什么问题。原因:即使在一台空闲机器上,仍然会有一些后台监视进程在运行,例如,邮件、新闻、守护进程、窗口管理程序以及其它一些进程。因此,,3.2分布式处理机分配算法,对度量方法1进行如下改进:只计算正在运行或已经就绪进程的数量。原因:每一个正在运行或处于就绪状态的进程都会给系统增加一定的负载,即便它是一个后台进程。存在的问题:许多后台守护进程只是定时被唤醒,检查所感兴趣的事件是否发生,如果没有,则重新进入睡眠状态。因此,这类进程只给系统带来很小的负载。,3.2分布式处理机分配算法,直接使用
17、处理机利用率:处理机繁忙时间在全部时间中(繁忙时间+空闲时间)所占的比例。一个利用率为20%的处理机负载要比利用率为10%的处理机大。优点:比较合理。原因:兼顾了用户进程和守护进程。,3.2分布式处理机分配算法,利用率的测量:设置一个定时器,它周期地中断处理机,每次都检查处理机的状态。并按照上述公式计算处理机利用率。它存在的问题:使用定时器中断所产生的一个问题就是当处理机内核正在执行原语时,它屏蔽了包括定时器中断在内的所有中断。当原语执行时发生定时器中断,中断就会在原语执行完毕才能得到响应。如果该原语正阻塞前一个活动进程,那么,计算出的处理机利用率就会比实际情况要低得多。,3.2分布式处理机分
18、配算法,许多理论上的处理机分配算法都忽略了收集负载信息以及传送进程的额外开销:若一个算法将一个新创建的进程传送到远程机器上运行仅使系统性能提高10%左右,那它最好不要这样做,原因是传送进程的开销足以抵消所提高的性能。一个好的算法应该考虑算法本身所消耗的处理机时间、内存使用、以及网络带宽等。但很少有算法能做到这一点,因为它太难了。,3.2分布式处理机分配算法,在处理机分配算法实现中还必须考虑复杂性:事实上,所有的研究者只分析、模拟或计算处理机的利用率、网络的使用情况以及响应时间,以此来衡量他们所提出算法的好坏。很少有人考虑软件的复杂性对系统的性能、正确性和坚固性所产生的影响。也不会有人提出了一个
19、新算法并宣称它的性能非常好,然后,得出结论说这个算法不值得使用,因为它的算法性能有可能只是比现有的算法稍好一点,但在实现上却复杂得多。,3.2分布式处理机分配算法,然而,Eager 等人在1986年所做的研究使追求低复杂和最优的人们看到了希望。他们研究了三个算法。在这三个算法中,所有的机器都测量自己的负载以判断它是否超载。当一个新进程创建时,创建该进程的机器就会检查自己是否超载,如果是,则它就寻找一台欠载的远程机器去运行该进程。这三个算法的不同之处在于寻找远程机器的方法。,3.2分布式处理机分配算法,算法1 随机地选择一台机器,并把新创建的进程传送到该机器上。如果该接收机器本身也超载,它也同样
20、随机地选择一台机器并把该进程传送过去。这个过程一直持续到有一台欠载的机器接收它为止,或者指定计数器溢出停止该进程的传送。,3.2分布式处理机分配算法,算法2 随机地选择一台机器,然后发送一个信息给该机器询问该机器是超载还是欠载。如果该机器欠载,它就接收新创建的进程;否则,新进程的创建机器继续随机地选择一台机器并向其发送一个询问消息。这个过程一直持续到找到一台欠载机器为止,或超过了一定的询问次数,如果找不到欠载机器,该新创建的进程就只好留在本地机器上运行。,3.2分布式处理机分配算法,算法3 给k台机器发送询问消息,接收这k台回送的负载消息。这个新进程将发送给负载最小的机器,并在它上面运行。显然
21、,如果我们不考虑所有发送询问负载消息和传送进程的额外开销,那么,人们会认为算法3的性能最好。事实上也确实如此。尽管算法3的性能只比算法2的性能稍好一点,但其复杂性以及额外开销却比算法2要大的多。Eager等人认为,如果一个简单算法只比复杂算法在性能上略低一点的话,那么,最好使用简单算法。,3.2分布式处理机分配算法,最后一个实现问题就是稳定性:由于不同的机器都在异步地运行各自的计算,所以,整个系统的负载很少能够达到平衡。因此,有时候会发生这样一种情况:在某个时刻,机器A得到的信息是机器B的负载较轻,因而,它就将新创建的进程传送给机器B。机器B在收到该进程之前负载又增加了,所以,收到该进程后,它
22、发现机器A的负载较轻,于是,它就将该进程又传送给机器A。这样造成了某个可怜的进程被来回传送的情况。原因是,每一个机器上的负载每时每刻都在变化。,3.2分布式处理机分配算法,静态分配算法根据系统的先验知识做出决策:运行时负载不能够重新分配。算法目标:调度一个任务集合,使它们在各个目标PE上有最小的执行时间。设计算法时的三个主要的因素:处理器互连任务划分(粒度决策)任务分配,3.2分布式处理机分配算法,静态分配问题即便在简单地对计算开销和通信开销做某种假设以后,依然是一个NP完全问题。因此,可以利用数学工具如图、启发式规则来得到次优的解。通常,用图模型表示任务和PE 结构。可以用任务优先图或者任务
23、交互作用图对任务集合建模。,3.2分布式处理机分配算法,任务优先图又称为有向无环图(DAG):如图,每个链接:定义任务间的优先关系节点上的标记:表示任务执行时间链接上的标记:表示任务完成后启动后续任务所需的时间间隔,3.2分布式处理机分配算法,任务交互作用图:如图:链接:定义两个任务间的相互关系每个链接赋予一对数:表示这两个任务在同一个PE 上时的通信开销和在不同PE 上时的通信开销。,3.2分布式处理机分配算法,任务划分的粒度:一个给定任务划分的粒度定义是任务分解中影响通信开销的所有单元的平均尺度。根据数据单元的大小,算法可以分成。细粒度:数据单元小粗粒度:数据单元大中粒度:介于上述两者之间
24、粒度的大小:1)若太大,会降低并行度,因为潜在的并行任务可能被划分进同一个任务而分配给一个处理器。2)若太小,进程切换和通信的开销就会增加。,3.2分布式处理机分配算法,任务划分的一个主要目标:尽可能消除处理器间通信引起的开销。可以使用三种方法:水平或者垂直划分。主要思想是在给定的任务优先图中垂直或者水平划分。关键路径(最长路径)的概念常常在垂直划分中使用。水平划分把给定的任务分成若干层,任务的优先级由它们所在的层次决定,3.2分布式处理机分配算法,通信延迟最小划分:主要思想是把通信频繁的节点归成一类。然而,这些需要通信的任务分配在一个处理器上会丧失任务间的并发性。有的研究者认为:如果减小通信
25、延迟的好处抵销了并行任务串行化的损失,就采用通信延迟最小划分。可以把一个划分问题转换成一个网络流问题,将在后面的小节中讨论。,3.2分布式处理机分配算法,任务复制,这是任务划分的一个可选方法:主要思想是通过在PE上复制任务来降低通信开销。这个方法保留了任务原有的并行性;但是存储空间要求和同步开销增加了。可以利用任务复制来达到容错性,可以实现无错调度以保证处理器出现错误时最后计算结果正确。,3.2分布式处理机分配算法,任务划分被称做任务聚类,它强调在给定的图模型中对小任务分类。任务划分把图当做一个整体,划分成不同的类(颗粒)。不论任务划分还是任务聚类,都生成一个颗粒集合。通常颗粒的数目等于处理器
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 操作系统 AdvancedOperatingSystemppt 课件
链接地址:https://www.31ppt.com/p-6285749.html