当前位置:嗨网首页>书籍在线阅读

07-用户级线程模型

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

7.3.1 用户级线程模型

和“内核级线程模型”模型相反,“用户级线程模型(user-level threading)”是“N:1线程模型(threading)”。在“用户级线程模型”模型中,用户空间是系统线程支持的关键,因为它实现了线程的概念。一个保护N个线程的进程只会映射到一个内核进程——即N:1。该模型很少甚至不包含内核支持,但用户空间代码有很多,包括用来管理线程的用户空间调度器,以及以非阻塞模式捕捉和处理I/O的机制。用户级线程模型的优点在于上下文切换几乎是零成本的,因为应用本身可以决定何时运行哪个线程,不需要内核操作。其缺点在于由于支持线程的内核实体只有一个,该模型无法利用多处理器,因此无法提供真正的并行性。在现代的操作系统中,这个缺点很严重,尤其是在Linux上,减少上下文切换代价带来的好处微乎其微,因为Linux支持非常低成本的上下文切换。

在Linux上,虽然也存在用户级线程库,大多数库提供的都是“1:1线程模型”,在本章后面将会探讨。