分类:
2009-02-26 09:09:06
Document #: 2011993000004
▶ 1:1 方式 ▶ M:1 方式 ▶ M:N 方式 核心线程既轻量级线程。用户线程映射到核心线程的处理是通过虚拟处理器(VP )完成的, 换句话说,用户线程的调度首先映射到VP, 由VP 调度,VP 是一个核心线程,或者是绑定到核 心线程的结构。下面将给出这三种方式的详细介绍。 1 ) 1:1 调度方式 在这种方式中,每一个用户线程绑定到一个VP 上,即一个核心线程,而VP 并不一定绑定到 物理的CPU ,除非是执行绑定到CPU 的操作。从用户级看,每一个VP 就是一颗可以运行用户 代码或者系统调用的CPU 。绑定到VP 的线程,将直接被核心调度器调度,具有系统级的范围。 可以用图示的方式直观的标示如下: 2 ) M:1 调度方式
方式是有POSIX 线程库调度器完成的,所有的用户线程编程工具完全有POSIX 线程库管理。这种调度方式可适用于任何UNIX 系统,特别是在一些传统的单线 程系统中,使用更广泛,图示如下:
绑定VP 的用户线程,可以称为本地或进程范围的线程,这样的线程不能用核心调度器 直接调度,POSIX 线程库调度器将处理用户线程到VP 的映射,然后核心调度器将直接 调度与之相关的核心线程。在三种调度方式中,这是最复杂、最有效的一种调度策略。 用户及线程编程工具被POSIX 线程和核心线程共享。图示如下: 从AIX4.3 版本开始,AIX 在进程级别支持线程的调度,用户线程调度器由POSIX 线程库 提供,支持M:N 调度模式。对应于用户线程,POSIX 线程库调度器有一个或一组VP 对应, 这种对应方式,为进程创建多个线程,充分利用核心资源提供了支持。 POSIX 线程库通过编程控制线程的调度,有两种不同的实现方法: 1 ) 常见线程时设置调度属性值 2 ) 动态的改变调度属性值
AIX 系统支持三种不同POSIX 线程调度策略:
有同一优先级时,按照先进先出的调度策略,运行固定的时间片。 3 ) SCHED_OTHER ,这是AIX 缺省的调度策略,每一线程都有一初始的优先级,但是随着 线程的运行而动态的改变优先级。
所有的线程都有固定的优先级,这种调度策略对使用线程读取传感器或写控制器时特别有效。 在使用FIFO 调度策略时应注意,因为线程除非被某些调用阻塞,否则将一直运行至结束, 所以对高优先级的线程会造成负面的影响。 AIX 操作系统也提供一些环境变量影响线程的调度策略,这里只介绍两个环境变量 AIXTHREAD_SCOPE 和AIXTHREAD_MNRATIO 。 AIXTHREAD_SCOPE :如果线程使用缺省的线程属性值创建,这个值可以设定线程的范围, 使用方法为: AIXTHREAD_SCOPE=[P|S] P 标示进程范围,S 标示系统范围,如果没有设定此环境变量,则作用于进程范围,执行M:N 的 调度方式,如制定此值为S ,则使用1:1 的调度方式。 AIXTHREAD_MNRATIO :这个环境变量,将指定用户线程与核心线程之间的映射比例,设定 方法为: AIXTHREAD_MNRATION=p:k k 是对应于用户线程p 的核心线程数,对于p ,k 值由以下几种处理: 1 ) 如AIXTHREAD_SCOPE 值为S ,则为用户线程与核心线程的比率为1:1 2 ) 如AIXTHREAD_SCOPE 值为P ,则缺省比率为8:1 ,否则为设定值 3 ) 如k 值大于p 值,则认为是1:1 的对应比率 参考资料: |
Copyright and trademark information |
IBM, the IBM logo and ibm.com are trademarks of International Business Machines Corp., registered in many jurisdictions worldwide. Other product and service names might be trademarks of IBM or other companies. A current list of IBM trademarks is available on the Web at "Copyright and trademark information" at . |