操作系统复习
第三章 进程管理
3.2 线程
一、线程的引入
- 传统进程属性:资源分配单位、CPU调度单位
- 缺点:时间空间开销大,限制并发度的提高
- 解决方法:引入线程
- 线程作为调度的基本单位
- 进程作为资源分配单位
- 引入线程后,进程属性:
- 拥有资源的基本单位
- 可以拥有多个线程,它们可并发执行
- 进程不再是可执行的实体
二、进程和线程的比较
- 调度:线程上下文切换比进程上下文切换快
- 拥有资源
- 进程间相互独立
- 同一进程的各线程间资源共享
- 系统开销:线程减小并发执行的时间和空间开销
- 并发性:在系统中建立更多的线程来提高并发性
三、线程的状态、线程控制块、线程的创建与终止
- 线程的状态
- 执行
- 就绪
- 阻塞
- 线程控制块:TCB
- 线程的创建和终止:函数或系统调用
- 创建
- 应用程序在启动时,通常仅有一个线程在执行——初始化线程
- 初始化线程可根据需要再去创建若干个线程
- 线程创建函数执行完后,将返回一个线程标识符供以后使用
- 终止
- 线程完成了自己的工作后自愿退出
- 线程在运行中出现异常或由于某种原因而被其它线程强行终止
- 创建
四、OS对线程的实现方式
- 内核线程KST
- 概念
- 创建、阻塞、撤销、切换等操作在内核空间实现
- 调度以线程为单位进行
- 操作系统内核给应用程序提供相应的系统调用和应用程序接口API,使用户程序可以创建、执行、撤消线程。
- 优点
- 多处理机系统中,内核能够同时调用同一进程中的多个线程并行执行
- 进程中一个线程被阻塞,该进程中的其它线程还可以运行
- 线程切换快,开小小
- 内核本身采用多线程技术,提高系统执行速度和效率
- 缺点
- 用户线程切换,需要从用户态转到核心态进行,开销大
- 概念
- 用户线程ULT
- 概念
- 用户级线程在用户空间实现,无需内核支持
- 调度以进程为单位进行
- 优点
- 线程切换不需要转到核心态
- 线程调度算法可以由进程专用
- 用户级线程的实现与OS平台无关
- 缺点
- 系统调用的阻塞问题:一个线程被阻塞,该进程中的所有线程被阻塞
- 不能利用多处理机技术:只将处理机分配给进程
- 用户级线程的实现
- 运行时系统:管理和控制线程的函数集合
- 内核控制线程:轻量级线程,LWP通过系统调用获取内核服务
- 概念