Linux下三种线程模型
存在于Linux核心2.4及以前的版本中。用户态线程和核心态线程采用1:1模型。
存在于Linux核心2.6及以后的版本中。用户态线程和核心态线程采用1:1模型。
为Linux核心2.4开发,后来NPTL胜出,从而停止开发。用户态线程和核心态线程采用M:N模型。
线程相关工具
LD_ASSUME_KERNEL=2.4.19:这会覆盖 NPTL 的实现。这种实现通常都表示使用标准的 LinuxThreads 模型,并启用浮动堆栈的特性。
LD_ASSUME_KERNEL=2.2.5:这会覆盖 NPTL 的实现。这种实现通常都表示使用 LinuxThreads 模型,同时使用固定堆栈大小。
我们可以使用下面的命令来设置这个变量:
export LD_ASSUME_KERNEL=2.4.19
部分现代 Linux 发行版都预装了 LinuxThreads 和 NPTL,因此它们提供了一种机制来在二者之间进行切换。要查看您的系统上正在使用的是哪个线程库,请运行下面的命令:
$ getconf GNU_LIBPTHREAD_VERSION NPTL 2.5
可以使用ps的“-m”选项来显示线程:
$ ps -elm 0 - 555 24900 24895 1 - - - 116011 - ? 02:13:15 firefox-bin 0 S 555 - - 1 75 0 - - - - 02:12:00 - 1 S 555 - - 0 75 0 - - - - 00:00:10 - 1 S 555 - - 0 75 0 - - - - 00:00:13 - 1 S 555 - - 0 78 0 - - - - 00:00:00 - 1 S 555 - - 0 83 0 - - - - 00:00:03 - 1 S 555 - - 0 75 0 - - - - 00:00:02 -
参考资料
Linux线程简介
Linux下三种线程模型
存在于Linux核心2.4及以前的版本中。用户态线程和核心态线程采用1:1模型。
存在于Linux核心2.6及以后的版本中。用户态线程和核心态线程采用1:1模型。
为Linux核心2.4开发,后来NPTL胜出,从而停止开发。用户态线程和核心态线程采用M:N模型。
线程相关工具
LD_ASSUME_KERNEL=2.4.19:这会覆盖 NPTL 的实现。这种实现通常都表示使用标准的 LinuxThreads 模型,并启用浮动堆栈的特性。
LD_ASSUME_KERNEL=2.2.5:这会覆盖 NPTL 的实现。这种实现通常都表示使用 LinuxThreads 模型,同时使用固定堆栈大小。
我们可以使用下面的命令来设置这个变量:
部分现代 Linux 发行版都预装了 LinuxThreads 和 NPTL,因此它们提供了一种机制来在二者之间进行切换。要查看您的系统上正在使用的是哪个线程库,请运行下面的命令:
可以使用ps的“-m”选项来显示线程:
参考资料
Categories
Feeds
Tags
Copyright © 2012 Zhigang Wang. Some right reserved.
The views expressed on this web site are my own and do not necessarily reflect the views of Oracle.