Linux 内核并不支持真正意义上的线程,LinuxThreads是用与普通进程具有同样内核调度视图的轻量级进程来实现线程支持的。这些轻量级进程拥有独立的进程id,在进程调度、信号处理、IO等方面享有与普通进程一样的能力。在源码阅读者看来,就是Linux内核的clone()没有实现对 CLONE_PID参数的支持。
此处不能不提到Scheduler Activations。这个1991年在ACM上发表的多线程内核结构影响了很多多线程内核的设计,其中包括Mach3.0、NetBSD和商业版本 Digital Unix(现在叫Compaq True64 Unix)。它的实质是在使用用户级线程调度的同时,尽可能地减少用户级对核心的系统调用请求,而后者往往是运行开销的重要来源。采用这种结构的线程机制,实际上是结合了用户级线程的灵活高效和核心级线程的实用性,因此,包括Linux、FreeBSD在内的多个开放源码操作系统设计社区都在进行相关研究,力图在本系统中实现Scheduler Activations。
五.参考资料
1. [Linus Torvalds,2002] Linux内核源码v2.4.20
2. [GNU,2002] Glibc源码v2.2.2(内含LinuxThreads v0.9)
3. [Thomas E. Terrill,1997] An Introduction to Threads Using The LinuxThreads Interface
4. [Ulrich Drepper,Ingo Molnar,2003] The Native POSIX Thread Library for Linux
5. http://www-124.ibm.com/developer ... ,NGPT官方网站
6. [Ralf S. Engelschall,2000] Portable Multithreading
7. [Thomas E. Anderson, Brian N. Bershad, Edward D. Lazowska, Henry M. Levy,1992] Scheduler Activations: Effective Kernel Support for the User-Level Management of Parallelism
8. [pcjockey@21cn.com] Linux线程初探