操作系统概念_第四章_线程

概述


线程是什么

线程是CPU使用的共享单元,由线程ID,程序计数器,寄存器集合和栈组成。它与属于同一进程的其他线程共享代码段,数据段和其他操作系统资源。
这里写图片描述


多线程编程的优点

  1. 响应度高:一个多线程的程序即使部分阻塞,其他部分仍能运行,从而增加了对用户的响应程度。
  2. 资源共享
  3. 经济:创建和切换线程比创建进程更节省资源和时间
  4. 多处理器体系结构的利用:多线程能充分利用多处理器体系

多线程模型

提供多线程支持有两种方式:用户线程内核线程

  • 用户线程受内核支持,无须内核管理
  • 内核线程由操作系统支持和管理

在用户线程和内核线程之间存在一定的关系,即多线程模型,以下讨论三种常用的关系:多对一,一对一,多对多


多对一模型

多个用户线程映射到一个内核线程

  • 优点:效率比较高
  • 缺点:如果一个程序阻塞,整个进程就会阻塞;且多个线程无法并行运行在多处理器上

这里写图片描述


一对一模型

每个用户线程映射到一个内核线程上

  • 优点:比多对一模型更好的并发功能;一个线程阻塞时,其他线程能够继续调用;多个线程能够并发运行在多处理器
  • 缺点:创建内核线程的开销会影响应用程序的功能
    这里写图片描述

多对多模型

  • 多对一模型可以创建任意多的用户线程,但是只能没有增加并发性
  • 一对一模型增强了并发性,但开发者要小心不能在应用程序中创建太多的进程

多对多模型没有上述的所有缺点,它多路复用了许多用户线程到同样数量或更小数量的内核线程上
这里写图片描述

一个二级模型既允许多路复用,也允许将一个用户线程绑定到一个内核线程上,称为二级模型
这里写图片描述


线程库(略)

猜你喜欢

转载自blog.csdn.net/sailist/article/details/79957644