Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1901072
  • 博文数量: 217
  • 博客积分: 4362
  • 博客等级: 上校
  • 技术积分: 4180
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-20 09:31
文章分类

全部博文(217)

文章存档

2017年(1)

2015年(2)

2014年(2)

2013年(6)

2012年(42)

2011年(119)

2010年(28)

2009年(17)

分类: LINUX

2011-09-10 08:48:36

轻量级进程和普通进程的区别在于:
前者没有独立的用户空间(内核态线程无用户空间,用户态线程共享用户空间),而普通进程有独立的内存空间;
表现在数据结构上:线程的mm=null或者与其他线程共享,而进程有独立的mm_struct。

内核线程

内核线程只运行在内核态,不受用户态上下文的拖累。

 

Ø         处理器竞争:可以在全系统范围内竞争处理器资源;

Ø         使用资源:唯一使用的资源是内核栈和上下文切换时保持寄存器的空间

Ø         调度:调度的开销可能和进程自身差不多昂贵

Ø         同步效率:资源的同步和数据共享比整个进程的数据同步和共享要低一些。

轻量级进程

轻量级进程(LWP)是建立在内核之上并由内核支持的用户线程,它是内核线程的高度抽象,每一个轻量级进程都与一个特定的内核线程关联。内核线程只能由内核管理并像普通进程一样被调度。

轻量级进程由clone()系统调用创建,参数是CLONE_VM,即与父进程是共享进程地址空间和系统资源。

与普通进程区别:LWP只有一个最小的执行上下文和调度程序所需的统计信息。

 

Ø         处理器竞争:因与特定内核线程关联,因此可以在全系统范围内竞争处理器资源

Ø         使用资源:与父进程共享进程地址空间

Ø         调度:像普通进程一样调度

用户线程

用户线程是完全建立在用户空间的线程库,用户线程的创建、调度、同步和销毁全又库函数在用户空间完成,不需要内核的帮助。因此这种线程是极其低消耗和高效的。

Ø         处理器竞争:单纯的用户线程是建立在用户空间,其对内核是透明的,因此其所属进程单独参与处理器的竞争,而进程的所有线程参与竞争该进程的资源。

Ø         使用资源:与所属进程共享进程地址空间和系统资源。

Ø         调度:由在用户空间实现的线程库,在所属进程内进行调度

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