solaris上的两种线程模型

原创 2004年05月12日 18:30:00
我觉得线程可能是让人即爱又恨的东西。爱它的是:在很多时候它确实可以改善程序的结构,可以节省系统资源,甚至可以在一定程度上提高系统的效率。恨它的是:它很容易犯错,关于这一点我体会的是最深的,我们的系统就是由于线程造成了严重的问题。但是话又说回来了,我们也不能因噎废食,常言道“艺高人胆大”,我想只要我们有足够的知识和经验,线程会成为我们手里的一把利器。

我是在solaris上开发的,这里我想介绍一下solaris上的两种线程模型,从整体上描述一下该平台上线程开发的基本知识:

在solaris上有两种线程库,一种是符合POSIX标准的pthread库,一种是SUN自己的thread库,这里我主要针对POSIX标准进行描述。大家在用POSIX函数进行设置线程属性的时候,常常会遇到属性PTHREAD_SCOPE_PROCESS,那么用这种属性建立的线程叫做unbound线程,而采用属性PTHREAD_SCOPE_SYSTEM建立的线程叫做bound线程,那么unbound和bound线程到底有什么区别那?下面我将描述solaris上的两种线程模型,并从中给出答案。

two-level:solaris上的标准实现模型

上面这个图中LWP是轻权进程的意识,这里你可以认为它就是CPU,用户空间的线程一旦获得了LWP,也就是说它获得了可执行能力,它可以随时被操作系统调度。

我们看这个图的左半部分,我们看到用户空间的thread和内核空间的LWP并不是一对一的关系,而是N对M的关系,那么由那个线程获得LWP,这个调度的完成是由线程库来完成的,而不需要内核的参与,也就是这种方式的线程上下文切换比较快,并且很明显这种方式更节省内核资源,solaris根据一定的策略提供一个LWP池,供上面更多的线程分享,这种线程就是所说的unbound线程。

看这个图的右半部分,我们可以看到用户空间的线程thread和LWP是one-to-one的对应关系,每一个线程都有一个永久的LWP为它服务,很明显这种方式的线程的实时调度性要好,但是这种线程的上下文切换需要KERNEL的参与,并且由于LWP本身是消耗操作系统资源的,因此这种方式要比上面的那种方式浪费资源,这种方式的线程就是所谓的bound线程。
 
one-level:solaris上可选实现模型

这种模型其实就是提供一致的线程和LWP的one-to-one对应关系,而没有thread和LWP的N对M的关系,很显然one-level模型要更耗系统资源,但是可能会提高程序的效率。

对于要重新编译的程序,可以加上编译选项-R /usr/lib/lwp来采用one-level模型,对于已经编译好的程序,那么在LD_LIBRARY_PATH环境变量设置加上/usr/lib/lwp即可。

Solaris的线程模型

Solaris的线程模型摘自《操作系统精髓与设计原理》BY William Stallings刘建文略译(http://blog.csdn.net/keminlau) KEY:操作系统 线程 进程 用...
  • keminlau
  • keminlau
  • 2009年07月16日 21:25
  • 3177

solaris 下多线程编程

本文遵循CPL协议,可以免费自由使用,但不得去掉作者信息。作者: 周海汉Email:ablozhou at gmail.com日期:2007.8.9 本文根据作者PPT讲稿整理。 参考资源:http:...
  • ablo_zhou
  • ablo_zhou
  • 2007年08月10日 00:35
  • 1492

Solaris库线程实现分析 初版

 目录 1. 概要. 42. OpenSolaris线程的组成和分类. 52.1. 内核线程. 52.1.1. 内核线程的组成(lwp-kthread)52.2. 库线程及组成. 52.2.1. th...
  • schulunburg4000
  • schulunburg4000
  • 2007年05月05日 13:57
  • 5520

第三方软件安装在Solaris的什么地方?

Please avoid installing any 3rd party software, including your own, under /usr. That directory is fo...
  • hotsolaris
  • hotsolaris
  • 2007年08月15日 16:47
  • 675

windows上的文件通过FTP服务传送到solaris主机上

目标:将windows上的文件通过FTP服务传送到solaris主机上 [root@solaris186:/]# svcs ftp                              //查看f...
  • huangyanlong
  • huangyanlong
  • 2014年02月20日 00:09
  • 1729

solaris上的两种线程模型

我觉得线程可能是让人即爱又恨的东西。爱它的是:在很多时候它确实可以改善程序的结构,可以节省系统资源,甚至可以在一定程度上提高系统的效率。恨它的是:它很容易犯错,关于这一点我体会的是最深的,我们的系统就...
  • zhanghx6986
  • zhanghx6986
  • 2004年05月12日 18:30
  • 1208

Solaris2.4多线程编程

  • 2008年11月18日 08:50
  • 356KB
  • 下载

简明教程:如何在Solaris操作系统上开发C 应用程序

1,开发C程序的必要工具和设置A,Solaris下的开发工具在solaris下开发C应用程序,缺省开发环境是Sun Studio。目前Sun Studio 11是Sun公司最新的C/C++/Fortr...
  • sunboy_2050
  • sunboy_2050
  • 2011年04月14日 17:48
  • 5296

Solaris下之FTP使用指南

#ftp sunsite.unc.edu 。。。。。。 此时需要输入用户名和密码,一般情况下都有开匿名用户,输入anonymous,密码一般用一个邮箱就可以了。 接下来看一下有什么目录,跟本地一...
  • bennyfun79
  • bennyfun79
  • 2009年04月27日 15:11
  • 1205

《多线程编程指南》介绍了SolarisTM 操作系统(Solaris Operating System, Solaris OS)中 POSIX®线程和Solaris 线程的多线程编程接口

  • 2009年10月11日 09:11
  • 1.29MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:solaris上的两种线程模型
举报原因:
原因补充:

(最多只允许输入30个字)