1.4.1 新的线程模型
Solaris2.2到Solaris 8实现了两层线程模型中,用户线程被复合到潜在地更小的LWP池内。最初的设计意图是在进程内支持成百上千的线程,而不需要进入内核进行多个线程管理任务,例如创建和销毁线程。这个模型很好地使用了很多年,但是并非没有遇到考验。复合用户线程到可用的LWP需要在线程库级维护可运行的线程队列和用户线程调度程序——与内核调度程序分开并且不同。在内核可以调度用户线程到一个处理器上运行之前,需要将它绑定到LWP。维护一个库级的线程调度程序是极其复杂的。另外,在两层的模型中维护正确的、异步的信号行为相当具有挑战性,因为当系统试图向用户线程传递信号的时候,接收发出信号的用户线程可能不在LWP上。最后,并发管理和调度延迟的问题可能导致多线程应用的性能降低。调度延迟是等待线程库调度程序链接用户线程到可用的LWP造成的。并发问题与维护足够数量的LWP有关,因此进程没有可运行的用户线程等待执行资源(LWP)。
从Solaris 8开始,新的线程模型被引入:单层模型。即,在用户线程被创建的时候,LWP和内核线程也被创建并被链接到用户线程;用户线程从来不会没有LWP/kthread。这对应于在两层模型中被称为的绑定线程。线程编程界面为创建绑定线程提供一个标记;这个标记自从线程编程界面被引入Solaris就已经存在了。新的单层模型可以被认为是所有的线程从始至终都被绑定。新的线程模型通过分发替代的线程库被引入Solaris 8。 缺省地,多线程的应用连接到/usr/lib/libthread.so,即Solaris 8提供的原有的两层模型。替代的libthread.so共享对象库被放在了/usr/lib/lwp目录中。新的库与现存的所有多线程应用程序二进制兼容。使用新的线程库不必重新编译:只需简单设置运行时连接程序的路径环境变量指向/usr/lib/lwp。在Solaris 9和Solaris 10 中,单层线程库是缺省的线程库,所以获得单层模型行为不需要设置运行时连接程序的路径变量。
新的线程模型与原来的模型相比,具有几个好处:
改进的性能、可扩展性和可靠性。库源代码的大小和复杂性随着单层模型的发展被充分地减小。库级的调度程序需要的内部库锁被废除。
可靠的信号行为。用户线程和LWP之间的信号屏蔽同步问题不复存在;异步的信号传递是可靠和一致的。
改进的自适应互斥信号锁实现。互斥信号(mutex)锁是用于多线程程序保护数据被多线程同时访问的同步原语。自适应互斥信号提供优化,因此希望获得被占用的锁的线程将动态决定自旋等待锁,或者睡眠并依靠唤醒机制在锁被释放的时候再试一次。使用新模型,自适应互斥信号已经被优化。
同步对象的用户级睡眠队列。同步对象,例如互斥信号锁,可以被程序员定义为进程内的锁。这意味着锁只会被进程内的线程,而不会被其他的进程的线程共享。对这些进程内的锁,管理锁的获得和释放的代码路径已经被优化,以维护用户级睡眠队列的锁的线程。为线程获得和释放进程内的锁,需要更少的调用进入内核。
这些特性,及线程库的其他优点,将在第二部分详细地讨论。
| 回书目 上一节 下一节 |
|
· 第六章 你能帮我吗?.. · Linux笔试面试题选摘测.. · 08年5月软考网管上午真.. · 性能测试从零开始 目录 · 08年5月软考网工上午真.. · 上周拒绝服务攻击(DDo.. |
· 08年5月各大网上书店及.. · 2008年5月24日软考试题.. · 软件设计师专家临考模.. · 上周网络管理员专家自.. · 网络工程师自测获奖名.. · 08年4月各大网上书店及.. |
|
||||
| · NAC安全访问控制 · 网络布线测试仪器 · Windows Server 2008专.. · Windows远程桌面应用 · 网络故障排除宝典 · 运营商封堵ADSL共享 中.. · 解析35岁技术人的价值.. · 世纪枭雄比尔盖茨的王.. |
· 主流品牌防火墙配置 · ASP.NET开发教程 · 超级计算机TOP500专题 · Vista SP1对决XP SP3 · SQL Server 2008/2005.. · 程序员如何成长? · C#技术开发指南 · 虚拟化技术还有点“虚” |
|||
|
||||
| · SOA 面向服务架构 · SQL Server 2008/2005.. · Apache技术专题 · 三层交换技术专题 · SQL Server入门到精通 · Windows远程桌面应用 · C#技术开发指南 · Apache技术专题 |
· Windows集群服务应用 · C#技术开发指南 · 国际文档格式标准开战 · 路由器设置与口令恢复 · Linux 集群技术专题 · PHP开发应用手册 · SOA 面向服务架构 · 企业数据恢复指南 |
|||
|
||||
| · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · C#技术开发指南 · 三层交换技术专题 · Apache技术专题 · C#技术开发指南 |
· Windows远程桌面应用 · 企业数据恢复指南 · Windows集群服务应用 · 路由器设置与口令恢复 · Linux 集群技术专题 · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · 反垃圾邮件技术应用 |
|||