第九章 进程与线程
进程的概念
进程:具有一定独立功能的程序在一个数据集合上的一次动态执行过程;
程序是有序代码的集合,进程是程序的执行。
进程控制块
进程控制块(PCB):操作系统管理控制进程运行所用的信息集合。包含以下信息:
- 调度进程与处理机使用情况;
- 进程间通信相关的各种标识;
- 指向进程映像存储空间的数据结构;
- 进程使用的系统资源;
- 数据结构连接信息;
进程的状态
进程的生命周期划分:创建、运行、等待、抢占、唤醒与结束;这些不同周期的转换如下图所示:
每种状态转换的条件见下表:
箭头 | 条件 |
---|---|
(1) | 系统初始化; 用户请求创建一个新进程; 正在运行的进程调用了创建进程的系统调用; |
(2) | 获得CPU的调度; |
(3) | 请求并等待系统服务,无法马上完成; 启动某种操作,无法马上完成; 需要的数据还未到达; |
(4) | 高优先级进程就绪; 操作系统给进程分配的时间片已用完; |
(5) | 使进程进入等待状态的条件被满足; |
(6) | 正常退出; 错误退出(自愿的); 致命错误(强制性); 被其他进程杀死(强制性); |
进程挂起
进程挂起:操作系统将进程从内存移到外存(以节省内存占用);与之对应的,将进程从外存移入内存称为(进程)激活。
在进程的状态中考虑进程挂起后,就多了就绪挂起与等待挂起两种状态;这时各种状态的转换如下图所示:
相比上一节的状态转换,增加的状态转换的条件见下表:
箭头 | 条件 |
---|---|
(7) | 操作系统根据当前资源状况和性能要求将就绪态进程对换出去成为挂起就绪态; |
(8) | 没有就绪进程或挂起进程的优先级高于就绪态进程的优先级; |
(9) | 在抢先式分时系统,高优先级挂起进程就绪; |
(10) | 同(5) |
(11) | 其他进程释放了足够内存,且本进程在挂起的进程中优先级最高; |
(12) | 操作系统根据当前资源状况和性能要求将等待态进程对换出去成为挂起等待态; |
最后,操作系统切换进程的示意图如下:
线程的概念
线程是进程的一部分,描述指令流执行状态。它是进程中指令执行流的最小单元,是CPU调度的基本单位。
线程=进程-共享资源(地址空间,文件等)
对进程与线程作一个比较:
进程 | 线程 |
---|---|
资源分配单位 | CPU调度单位 |
拥有程序执行完整的资源 | 只独享指令流执行必要的资源(寄存器、栈) |
用户线程
用户自己实现,操作系统并不支持多线程。
内核线程
进程由内核通过系统调用实现的线程机制,由内核完成线程的创建、终止与管理。