操作系统原理第9章 处理器管理.ppt

9.3.4 线程调度 组调度提高应用程序性能的一个显著方式是使进程切换的开销最小。假设进程的一个线程正在执行,并且到达一点,必须与该进程的另-个线程在该处同步。如果这个线程未运行,但是在就绪队列中,则第一个线程被挂起,直到在其他处理器上进行了进程切换并得到了需要的线程。对于线程间需要紧密合作的应用程序,这种切换会严重地降低性能。合作线程的同时调度还可以节省资源分配的时间。例如,多个组调度的线程可以访问一个文件,而不需要在执行定位、读、写操作时进行锁定的额外开销。 9.3.4 线程调度 组调度的使用引发了对处理器分配的要求。一种可能的情况如下:假设有N个处理器和M个应用程序,每个应用程序有N个或少于N个线程。那么,使用时间片,每个应用程序将被给予M个处理器中可用时间的l/M。这个策略的效率可能很低。 专用处理器分配 给出组调度的一种极端形式,在一个应用程序执行期间,把一组处理器专门分配给这个应用程序。也就是说,当一个应用程序被调度时,它的每一个线程都被分配给一个处理器,这个处理器专门用于处理这个线程,直到应用程序运行结束。 9.3.4 线程调度 这个方法看上去极端浪费处理器时间,如果应用程序的一个线程被阻塞,等待I/O或与其他线程的同步,则该线程的处理器一直处于空闲:处理器没有多道程序设计。以下两点可以在一定程度上解释使用这种策略的原因: 1)在一个高度并行的系统中,有数十个或数百个处理器,每个处理器只占系统总代价的一小部分,处理器利用率不再是衡量有效性或性能的一个重要因素。 2)在一个程序的生命周期中避免进程切换会加快程序的速度。 9.3.4 线程调度 研究推断,比较有效的策略是将活跃线程的数目限制为不超过系统中处理器的数目。例如,大多数应用程序或者只有一个线程,或者可以使用任务队列结构,这种策略将提供对处理器资源更有效、更合理的使用。 9.3.4 线程调度 专用处理器分配和组调度,在解决处理器分配问题时都对调度问题进行了抨击。可以看出,多处理器系统中的处理器分配问题更加类似于单处理器中的存储器分配问题,而不是单处理器中的调度问题。在某一给定的时刻,给一个程序分配多少个处理器,这个问题类似于在某一给定时刻,给一个进程分配多少页框。考虑一个类似于虚存中工作集的术语——活动工作集。活动工作集指的是,为了保证应用程序以可以接受的速度继续进行,在处理器上必须同时调度的最少数目的活动(线程)。 9.3.4 线程调度 和存储器管理方案一样,调度活动工作集中所有元素失败时可能导致处理器抖动。当调度需要服务的线程,导致那些服务即将被用到的线程被取消调度时,就会发生这种情况。类似地,处理器碎片指当一些处理器剩余而其他处理器已被分配时,剩余的处理器无论是从数量上还是从适合程度上都难以支持正在等待的应用程序的需要。组调度和专用处理器分配的目的是避免这些问题。 动态调度 某些应用程序可能提供了语言和系统工具,允许动态地改变进程中的线程数目,这就使得操作系统可以通过调整负载情况来提高利用率。 9.2.4 公平共享调度 “公平共享”表明了这类调度程序的基本原则。每个用户被指定了某种类型的权值,该权值定义了该用户对系统资源的共享,而且是作为在所有使用的资源中所占的比例来体现的。特别地,每个用户被分配了处理器的共享。这种方案或多或少以线性的方式操作,如果用户A的权值是用户B的两倍,那么从长期运行的结果来看,用户A可以完成的工作应该是用户B的两倍。公平共享调度程序的目标是监视使用情况,对那些相对于公平共享的用户占有较多资源的用户,调度程序分配以较少的资源,相对于公平共享的用户占有较少资源的用户,调度程序分配以较多的资源。 9.3 多处理器调度 当一个计算机系统包含多个处理器时,在设计调度功能时就会产生一些新问题。本节首先给出关于多处理器的简单概述,然后分析设计进程级调度和线程级调度时的不同考虑。 9.3 多处理器调度 多处理器系统可以分为以下几类: 松耦合、分布式多处理器、集群:由一系列相对自治的系统组成,每个处理器有自己的内存和I/O通道。 专门功能的处理器:I/O处理器就是一个典型的例子。在这种情况下,有一个通用的主处理器,专用处理器受主处理器的控制,并给主处理器提供服务。 紧耦合多处理:由一系列共享同一个内存并在操作系统完全控制下的处理器组成。 在这里,我们主要关注的是最后一类系统,特别是与调度有关的问题。 9.3.1 粒 度 一种描述多处理器并把它和其他结构放置在一个上下文环境中的较好方法是,考虑系统中进程之间的同步粒度,或者说同步频率。我们可以根据粒度的不同来区分5类并行度,如表9-5所示。 表9-5 同步粒度和进程 9.3.1 粒 度 无约束并行性 对于无约束并行性,进程间没有显式的同步。每个进程都代表独立的应用或

文档评论(0)

1亿VIP精品文档

相关文档