赞
踩
多处理器系统分为以下几类:
粒度大小 | 说明 | 同步间隔(指令) |
---|---|---|
细 | 单指令流中固有的并行 | < 20 |
中等 | 一个单独应用中的并行处理/多任务处理 | 20 ~ 200 |
粗 | 多道程序环境中并发进程的处理器 | 200 ~ 2000 |
极粗 | 在网络节点上进行分布式处理,形成一个计算环境 | 2000 ~ 1M |
无约束 | 多个无关进程 | 不适用 |
对于无约束并行(independent parallelism),进程间没有显式的同步。每个进程都代表独立的应用/作业(典型为分时应用)。
粗粒度(coarse)、极粗粒度(very coarse)并行,指在进程间存在同步,但这种同步的级别极粗。可以简单地处理为一组运行在多道程序单处理器上的并发进程。
典型情况下,为了达到中粒度并行性(medium-grain)的同步,在应用程序的线程之间,需要更高程度的合作、交互。
细粒度(fine-grain)并行性表示与线程中并行相比,更为复杂的使用情况。
三个相互关联的设计问题:把进程分配到处理器、在单处理器上使用多道程序设计、一个进程的实际分派。所用的方法,通常取决于应用程序的粒度级和可用处理器的数量。
若假设多处理器结构统一(各性能基本持平),最简单的调度方法是把处理器视为一个资源池,并按照要求把进程分配到相应的处理器。
静态分配 :一个进程从被激活到完成,一直被分配给同一个处理器(需要为每个处理器维护一个专门的短程队列)
动态负载平衡 :该策略中,线程能在不同处理器对应的队列间转移
如果每个进程在其生命周期中都被静态地分配给一个处理器,就应考虑处理器是否支持都到程序。
与多处理器调度相关的最后一个设计问题是选择哪个进程运行。
在大多传统的多处理器系统中,进程并不指定到一个专用的处理器。并非所有处理器都只有一个队列,或只使用某种类型的优先级方案,而是有多个基于优先级的队列,都送入相同的处理器池中。在任何情况下,都可把系统视为多服务器排队结构。
一般结论,对于双处理器,调度原则的选择不如在单处理器中重要。因此,在多处理器系统中使用简单的FCFS原则,或在静态优先级方案中使用FCFS就已足够。
在多处理器线程调度和处理器分配的各种方案中,有四种重要方法:负载分配、组调度、专用处理器分配、动态调度 。
进程不分配到某个特定的处理器。系统维护一个就绪队列的全局队列,每个处理器只要空闲就从队列中选择一个线程。
三种不同的负载分配方案:
先来先服务(FCFS)
最少线程数优先
可抢占的最少线程数优先
优点:
缺点:
一组相关的线程基于一对一的原则,同时调度到一组处理器上运行。
优点:
组分配与 & 加权组分配:
它与负载分配相反,它通过把线程指定到处理器来定义隐式的调度。采用池化思想,维护处理器池,每个程序开始执行时都分配给其与线程数等同数量的处理器,终止时,向处理器池交还资源。
一种极端形式的组调度:在一个应用程序执行期间,把一组处理器专门分配给这个应用程序。即当每个线程都被分配给一个处理器,相应的处理器专门用于处理对应的线程,直到应用程序运行结束。
在执行期间,进程中线程数量可以改变。
当一个作业请求一个/多个处理器时:
释放了一个/多个处理器时(包括作业离开):
随着单个芯片上的内核数量的增加,最小化访问片外存储器比最大化处理器利用率更优先。在最小化访问片外存储器方面,传统且主流的方法是利用局部缓存。
例如,AMD推土机芯片,在这种芯片的架构中,每个内核拥有一个独立的一级缓存,每对内核共享一个二级缓存,所有内核共享三级缓存。
当部分单非全部内核共享缓存时,调度期间线程分配给内核的方式对性能会有显著的影响。
我们假定共享共享二级缓存的两个内核相邻。最好的情况是:
缓存共享需要考虑两方面的因素:
两种实时调度方法:
硬实时任务(hard real-time task) :必须满足最后期限的任务,否则会给系统带来不可接受的破坏 / 致命的错误。
软实时任务(soft real-time task) :有一个与之关联的最后期限,希望能满足这一期限,但并不强制。
非周期任务(aperiodic task) :有一个必须结束/开始的最后期限,或有一个关于开始时间、结束时间的约束条件。
周期任务(periodic task) :每隔周期T一次
实时操作系统5方面需求表征:可确定性、可响应性、用户控制、可靠性、故障弱化操作。
在某种程度上是指它可以按照固定的、预先确定的时间/时间间隔执行操作。多个进程竞争使用资源、处理器时间时,没有哪个系统是完全可确定的。可确定性关注操作系统获知有一个中断之前的延迟。
可响应性关注在知道中断之后,操作系统为中断提供服务的时间。
在实时系统中,允许用户细粒度地控制任务优先级必不可少。用户应能区分硬实时任务、软实时任务,并在每类中确定相对优先级。
在实时系统中比在非实时系统中更重要。实时系统是实时响应、控制事件的,性能的损失/降低可能产生灾难性的后果。
指系统在故障时尽可能多地保存其性能和数据的能力。
故障弱化运行的一个重要特征:稳定性:
实时系统 常见功能:
实时系统的核心是短任务调度程序。在设计这种调度程序时,公平性、最小平均响应时间不是最重要的,最重要的是所有硬实时任务都能在最后期限内完成,且尽可能多的软实时任务也能在最后期限内完成。
执行关于可行调度的静态分析。分析的结果是一个调度,它确定在运行时一个任务何时须开始执行。
适用于周期性任务,输入为周期性到达时间、执行时间、周期性的最后结束期限、每个任务的相对优先级。
执行一个静态分析,但未指定制度,而是通过给任务指定优先级,使得可以使用传统的基于优先级的抢占式调度程序。
在运行时动态地确定可行性,而非开始运行前离线地确定。到达任务仅能满足其他时间约束才能被接受、执行。可行性分析结果是一个调度/规划,用于确定何时分配任务。
不执行可行性分析。系统试图满足最后期限,并终止已经开始运行但错过最后期限的进程。
当前许多商用实时系统使用的方法,一个任务到达时,根据任务特性赋予其优先级,并通常使用某种形式的 时限调度(deadline scheduling),如最早最后期限调度。
大多数当代实时操作系统的设计目标是尽快启动实时任务,因此强调快速中断处理、任务分派。实时应用程序本身并不关注绝对速度,二负按住在最优价值的时间内完成任务,它按照优先级来提供依据,而并不以最有价值的时间来完成需求。
实时任务调度的方法,所需最常见的信息:
速率单调调度(Rate Monotonic Scheduling, RMS),可解决周期性任务多任务调度冲突。
RMS基于任务的周期给它们指定优先级。在RMS中,最短周期的任务具有最高优先级,依次递减。
若将任务优先级视为速率的函数,则它是一个单调递增函数,“速率单调调度” 因此得名。
**优先级反转(priority inversion)**是在任何基于优先级的可抢占调度方案中都会出现的现象。
当一个低优先级任务被某个资源(设备/信号量)所阻塞,且一个高优先级的任务也要被同一个资源阻塞,就会发生优先级反转。高优先级任务被置为阻塞态,低优先级任务使用、释放资源后,高优先级任务才会被唤醒。
无界限优先级反转(unbounded priority inversion):这种情况下,优先级反转的持续时间不仅取决于处理共享资源的时间,还却决于其他不相关任务的不可预测行为。
优先级继承(priority inheritance):优先级较低的任务继承任何与其共享同一个资源的优先级较高的任务的优先级。当高优先级任务在资源上阻塞时,立即改变优先级。资源被低优先级任务释放,这一改变结束。
优先级置顶(priority ceililng):优先级与每个资源相关联,资源的优先级:比使用该资源的具有最高优先级的用户的优先级
务也要被同一个资源阻塞,就会发生优先级反转。高优先级任务被置为阻塞态,低优先级任务使用、释放资源后,高优先级任务才会被唤醒。
无界限优先级反转(unbounded priority inversion):这种情况下,优先级反转的持续时间不仅取决于处理共享资源的时间,还却决于其他不相关任务的不可预测行为。
优先级继承(priority inheritance):优先级较低的任务继承任何与其共享同一个资源的优先级较高的任务的优先级。当高优先级任务在资源上阻塞时,立即改变优先级。资源被低优先级任务释放,这一改变结束。
优先级置顶(priority ceililng):优先级与每个资源相关联,资源的优先级:比使用该资源的具有最高优先级的用户的优先级
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。