操作系统概念(四):线程
前言
本章目标:
- 引入线程的概念
操作系统原理是武汉大学计算机学院软件工程专业所学习的一门专业课,教材为机械工业出版社的操作系统概念,本系列博客为该课程的学习笔记。
正文
1. 概述
在操作系统中引入进程的目的是使多道程序能并发执行,以改善资源利用率及提高系统吞吐量; 在操作系统中再引入线程,则是为了减少程序并发执行所付出的时空开销,使操作系统具有更好的并发性。
1.1. 动机
进程具有两个属性:
- 拥有资源的独立单位
- 调度和分派的基本单位
为使进程并发执行,则必须进行诸如创建、撤消、切换等一系列操作,这些操作涉及到资源管理,所花费的时空开销较大,为此引入了线程。
操作系统独立对待这两个属性:
- 调度及分派单位称为线程或轻型进程
- 拥有资源的单位称为进程或任务
1.1.1. 重型进程
进程有虚拟地址空间、打开文件及I/O资源等
1.2. 线程
线程是CPU使用的一个基本单元,包括:
- 线程标识
- 程序计数器
- 寄存器集
- 栈
线程与属于同一进程的线程共享:
- 代码段
- 数据段
- 其他操作系统资源
1.2.1. 线程拥有的资源
线程自己基本上不拥有资源,只拥有一点在运行时必不可少的资源(如程序计数器、一组寄存器和栈), 但它可以与同属一个进程的其他线程共享进程拥有的全部资源。
1.2.2. 线程状态
和进程类似,线程也有运行、就绪、阻塞等状态。
- 创建:当创建一个新进程时,也为该进程创建了一个线程。线程还可以创建新线程。
- 就绪:线程已获得除处理机外的所有资源。
- 运行:线程正在处理机上执行。
- 阻塞:线程因等待某事件而暂停运行。
- 终止:一个线程已完成。
线程的同步与通信与进程类似。进程的挂起及终止将影响到其中的所有线程。
1.3. 线程的优点
- 响应能力强
- 资源共享
- 经济性
- 多处理器体系结构的利用
2. 多线程模型
操作系统中有多种方式实现对线程的支持:
- 内核线程
- 用户线程
在有些系统中,提供了上述两种方法的组合实现。 在这种系统中,内核支持多线程的建立、调度与管理;同时,系统中又提供使用线程库的便利,允许用户应用程序建立、调度和管理用户线程。 因此可以很好地将内核线程和用户线程的优点结合起来。
内核线程(也称内核级线程 kernel-level thread )是指依赖于内核,由操作系统内核完成创建和撤消工作的线程。 在支持内核线程的OS中,内核维护进程和线程的上下文信息并完成线程切换。 一个内核线程阻塞时不会影响其他线程的运行。 处理机时间分配的对象是线程,所以有多个线程的进程将获得更多处理机时间。
用户线程(也称用户级线程user-level thread)是指不依赖于操作系统核心,由应用进程利用线程库提供创建、同步、调度和管理线程的函数来控制的线程。 用户线程的维护由应用进程完成,可以用于不支持内核线程的操作系统 当一个线程阻塞时,整个进程都必须等待,处理机时间是分配给进程的,进程内有多个线程时,每个线程的执行时间相对少一些。
2.1. 用户线程与内核线程的关系
- 多对一
- 一对一
- 多对多
2.1.1. 多对一模型
多对一模型将多个用户线程映射到一个内核线程。 线程管理由线程库在用户空间进行。
例如:Green threads – a thread library available for Solaris 2
2.1.2. 一对一模型
一对一模型将每个用户线程映射到一个内核线程。 这种模型的绝大多数实现限制了系统支持的线程数量。
例如:Windows 95/98/NT/2000
2.1.3. 多对多模型
多对多模型多路复用多个用户线程到同样数量或数量更少的内核线程上。
例如:Solaris 2, Windows NT/2000, IRIX, HP-UX, Tru64 UNIX.
2.2. 线程与进程的比较
- 调度:在传统OS中,进程是调度和分配资源的基本单位;引入线程后,线程是调度和分派的基本单位,进程是拥有资源的基本单位。
- 拥有资源:进程是拥有资源的基本单位,由一个或多个线程及相关资源构成。
- 并发性:进程之间可以并发执行,同一进程中的各线程之间也可以并发执行。
- 系统开销:进程创建、撤销及切换的开销大于线程。而同一进程的线程间同步与通信开销小。
习题集锦
课后作业
进程与线程的主要区别是什么?
调度:在传统OS中,进程是调度和分配资源的基本单位;引入线程后,线程是调度和分派的基本单位,进程是拥有资源的基本单位。 拥有资源:进程是拥有资源的基本单位,由一个或多个线程及相关资源构成。 并发性:进程之间可以并发执行,同一进程中的各线程之间也可以并发执行。 系统开销:进程创建、撤销及切换的开销大于线程。而同一进程的线程间同步与通信开销小。
本文首发于我的个人博客wangchucheng.com。
原文链接:https://wangchucheng.com/zh/posts/operating-system-concepts-4/
本博客文章除特别声明外均为原创,采用CC BY-NC-SA 4.0 许可协议进行许可。超出CC BY-NC-SA 4.0 许可协议的使用请联系作者获得授权。