by pascal4123
线程调度的组织有几种方式:
多线程单LWP
单线程单LWP 这种1对1的方式,允许多个线程在不同的cpu上同时跑。
缺点是每次产生1个线程,都需要创建1个LWP,即1次系统调用。
可创建的线程数量有限。
Win32, OS/2,部分POSIX实现采用这种方式。多线程多LWP
N/A
两级模式
这种是最好的.Digital UNIX, Solaris等采用这种方式.
按线程调度的权限分2种方式:
进程本地调度 Process Contention Scope -PCS
像多线程多LWP就是.线程调度的控制权在线程库.
系统全局调度 System Contention Scope -
SCS 像单线程单LWP就是.线程的调度被系统内核做了.POSIX允许两种方式都可以.但特别地,Win32,OS/2只能用系统全局调度这种方式.
不管线程调度,还是进程调度, 没有哪种方式能让所有人都满意的.
只要有足够的LWP,SCS和PCS没什么不同.
通常情况下,用SCS;当线程数量很大时,考虑用PCS.
重点讲下系统全局调度 SCS
Context Switch环境切换
环境切换是指把一个激活状态的线程从它的LWP上拿下来,换上另外一个等待的线程.
计算机的状态 包括在寄存器状态里--PC,SP,通用寄存器,和MMU页表.当环境切换发生时,相应的计算状态要发生切换.
通常你不需要过分关心线程调度,如果同步机制使用得当的话.
阅读(1006) | 评论(0) | 转发(0) |