Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1664577
  • 博文数量: 607
  • 博客积分: 10031
  • 博客等级: 上将
  • 技术积分: 6633
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-30 17:41
文章分类

全部博文(607)

文章存档

2011年(2)

2010年(15)

2009年(58)

2008年(172)

2007年(211)

2006年(149)

我的朋友

分类: LINUX

2007-11-29 11:11:33

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页表.当环境切换发生时,相应的计算状态要发生切换.


通常你不需要过分关心线程调度,如果同步机制使用得当的话.




阅读(970) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~