Linux 进程以及多线程的支持
2017-03-29 07:30
197 查看
1.最初内核并没有实现对多线程的支持,2.6之后开始以轻量级进程的方式对多线程进行支持(轻量级线程组).
a.在2.6 之前,如果需要实现多线程,只能在用户态下实现,用户程序自己控制线程的切换,
实际是N:1的对应关系,因为此刻内核调度是按进程的,不管应用中有多少个线程,它也只
能共享调度,如果有任何一个线程调用阻塞控制,那么整个进程的调度也就阻塞了。
b.在2.6 之后NPTL 实现了轻量级进程,对应一个内核线程,在此基础之上结合a中的原理,
就可以实现N:N 的对应关系,即用户进程中n个线程对应1个轻量级进程,这样一个用户
进程就可以对应多个轻量级进程(内核线程)。
关于线程和轻量级线程:其实他们都是执行序列而已,在用户程序中我们称执行序列为线程,
在内核中我们称一个执行序列为轻量级进程(LWP),因为内核中
没有线程的的概念,内核中的调度是以进程为单位的。
关于轻量级进程和重量级进程:区别在于LWT 可以实现资源共享,HWT却只能独享资源。
2.需要深入了解:
NPTL(Native Posix Thread Library),由RedHat 负责。
NGPT(Next Generation Posix Thread Package), 这个已经被IBM 放弃。
a.在2.6 之前,如果需要实现多线程,只能在用户态下实现,用户程序自己控制线程的切换,
实际是N:1的对应关系,因为此刻内核调度是按进程的,不管应用中有多少个线程,它也只
能共享调度,如果有任何一个线程调用阻塞控制,那么整个进程的调度也就阻塞了。
b.在2.6 之后NPTL 实现了轻量级进程,对应一个内核线程,在此基础之上结合a中的原理,
就可以实现N:N 的对应关系,即用户进程中n个线程对应1个轻量级进程,这样一个用户
进程就可以对应多个轻量级进程(内核线程)。
关于线程和轻量级线程:其实他们都是执行序列而已,在用户程序中我们称执行序列为线程,
在内核中我们称一个执行序列为轻量级进程(LWP),因为内核中
没有线程的的概念,内核中的调度是以进程为单位的。
关于轻量级进程和重量级进程:区别在于LWT 可以实现资源共享,HWT却只能独享资源。
2.需要深入了解:
NPTL(Native Posix Thread Library),由RedHat 负责。
NGPT(Next Generation Posix Thread Package), 这个已经被IBM 放弃。
相关文章推荐
- 【Linux】GDB调试多线程和多进程以及Core文件
- Linux 进程和线程查看以及管理
- linux 下mysql多线程支持问题
- 利用nagios,snmp,监听处理linux下的特定进程和端口,以及邮件短信报警功能 推荐
- jmap使用以及 linux下查看进程的内存使用情况
- linux c 多进程多线程比较
- (原创)linux内核进程调度以及定时器实现机制
- Linux下使用ps命令来查看Oracle DB以及EBS相关的进程
- linux-多线程-互斥锁在多进程共享
- linux-多线程-互斥锁在多进程共享
- Linux下使用ps命令来查看Oracle DB以及EBS相关的进程
- 1一个月linux debian学习 做出了第一个下载软件,支持多线程,断点续传
- Linux下如何查看进程打开的文件以及修改进程打开文件数上限
- 获取系统(linux)cpu信息以及进程信息
- linux 进程(调度通信)以及作业
- linux 下mysql多线程支持问题
- (转帖)Linux下面PHP开发环境源码安装-php,mysql,apache以及图形支持库GD的安装
- linux 0.12: 内核支持最多进程个数
- Linux内核对多进程和多线程的支持方式
- Linux下使用ps命令来查看Oracle DB以及EBS相关的进程