Linux线程机制总结
来源:互联网 发布:军事网络的安全保护 编辑:程序博客网 时间:2024/05/11 19:34
Linux2.0~2.4 : LinuxThreads库 每一个执行实体都是task_struct结构, 映射 1: 1,但需要增加管理线程。对Posix标准兼容的不好。
已被NPTL取代
Linux2.6 : NPTL(Native POSIX Threading Library)
实现方式: 类似LWP(轻量级进程) 用户线程:内核线程映射 1:1, 因为一个pThread(注: 这里pthread正确理解应为一种用户线程和内核线程的映射方式,之前理解为一种线程是错误的! )创建最终调用clone函数
(fork()、vfork()最终也调用该函数)创建一个内核可见的用户线程且由内核调度(但该可见线程是否需要在内核中创建对应内核线程?), 目前被结合入glibc库。
以上是linux线程库的发展历程。
还有两类目前不用的:
1. 1:N 即多个用户线程对应一个内核进程,因为内核一次只能给一个进程分配一个CPU,其他线程只能等,不适合多处理器。此外如果一个线程阻塞,该进程中的所有线程都被阻塞,直至该阻塞操作结束。
被抛弃。
2. 多对多 NGPT(Next Generation POSIX Threads) 即M:N模型(M个线程对应N个内核级线程), 也就是说若干个线程可能是在同一个执行实体上实现的,并发性较高,因此性能上有优势。按照2003年3月NGPT官方网站上的通知,NGPT考虑到NPTL日益广泛地为人所接受,为避免不同的线程库版本引起的混乱,今后将不再进行进一步开发,而今进行支持性的维护工作。也就是说,NGPT已经放弃与NPTL竞争下一代Linux POSIX线程库标准。
但在商业环境如UNIX上仍有应用。
参考 Linux 线程实现机制分析 国防科技大学计算机学院”的“Linux 线程实现机制分析”。
已被NPTL取代
Linux2.6 : NPTL(Native POSIX Threading Library)
实现方式: 类似LWP(轻量级进程) 用户线程:内核线程映射 1:1, 因为一个pThread(注: 这里pthread正确理解应为一种用户线程和内核线程的映射方式,之前理解为一种线程是错误的! )创建最终调用clone函数
(fork()、vfork()最终也调用该函数)创建一个内核可见的用户线程且由内核调度(但该可见线程是否需要在内核中创建对应内核线程?), 目前被结合入glibc库。
以上是linux线程库的发展历程。
还有两类目前不用的:
1. 1:N 即多个用户线程对应一个内核进程,因为内核一次只能给一个进程分配一个CPU,其他线程只能等,不适合多处理器。此外如果一个线程阻塞,该进程中的所有线程都被阻塞,直至该阻塞操作结束。
被抛弃。
2. 多对多 NGPT(Next Generation POSIX Threads) 即M:N模型(M个线程对应N个内核级线程), 也就是说若干个线程可能是在同一个执行实体上实现的,并发性较高,因此性能上有优势。按照2003年3月NGPT官方网站上的通知,NGPT考虑到NPTL日益广泛地为人所接受,为避免不同的线程库版本引起的混乱,今后将不再进行进一步开发,而今进行支持性的维护工作。也就是说,NGPT已经放弃与NPTL竞争下一代Linux POSIX线程库标准。
但在商业环境如UNIX上仍有应用。
参考 Linux 线程实现机制分析 国防科技大学计算机学院”的“Linux 线程实现机制分析”。
0 0
- Linux线程机制总结
- linux线程同步机制
- linux 线程 机制 探索
- linux 线程同步机制
- JAVA线程池机制总结
- linux基础——linux线程间通信及同步机制总结
- linux通信机制总结
- Linux锁机制总结
- Linux 线程实现机制分析
- Linux 线程实现机制分析
- Linux 线程实现机制分析
- Linux线程实现机制分析
- Linux 线程实现机制分析
- Linux 线程实现机制分析
- Linux线程实现机制分析
- linux多线程机制线程同步
- linux的线程同步机制
- Linux 线程实现机制分析
- 机器学习中的数学(3)-模型组合(Model Combining)之Boosting与Gradient Boosting
- linux运行级别
- Python 递归函数选择排序和二分查找
- Linux内核工程导论——网络:Filter(LSF、BPF、eBPF)
- 排序算法
- Linux线程机制总结
- Linux信号
- python中列表的常用方法
- zzuoj 10423: 强盗归来 (prim)
- 鱼亦飞的Android成长之路
- sar
- 2016.1.1放得下,走的起
- StringBuffer的insert()方法和append()方法
- 网站开发进阶(二十六)js刷新页面方法大全