进程管理
进程
可并发执行的程序在一个数据集合上的运行过程
特征
- 动态性(最基本特征)
- 并发性
- 独立性
- 异步性
- 结构特性
进程控制块
包含信息
- 标识符
- 进程状态
- 优先级
- 程序计数器
- 内存指针
- 上下文数据
- I/O状态信息
- 统计信息
由操作系统创建并管理
两状态进程模型
两种状态
- 运行态(Running)
- 未运行态(Not-running)
操作系统需要知道进程当前处于哪种状态,以便进行进程的执行——PCB
未运行态进程队列
进程状态模型改进
未运行状态
-
就绪状态(Ready to execute)
-
阻塞状态(Blocked)
- 等待I/O操作完成
通过采用两个不同的队列解决遍历队列需要花费的大量时间
五状态模型
运行(Running)
就绪(Ready)
阻塞(Blocked)
新建(New)
退出(Exit)
进程状态的转换
- 就绪态->运行态
- 运行态->阻塞态
- 阻塞态->就绪态
- 运行态->就绪态
系统中各进程状态管理
运行态进程:如果系统只有一个处理机,在任何时刻,最多只有一个进程处于运行态
就绪态进程:处于就绪态的进程按照一定算法排成一个就绪队列RL
阻塞态进程:处于阻塞态进程排在阻塞队列WL中
就绪队列和阻塞队列
多个阻塞队列
挂起(Suspended)进程
处理器运行速度远远快于I/O设备,当就绪态进程数为0,处理器必须等待
解决方式
-
扩充内存
-
进程交换到磁盘,释放内存空间
- 进程被交换到磁盘上,进程从阻塞状态转换到挂起状态
一个挂起状态
两个挂起状态
- 阻塞/挂起(Blocked/Suspend)
- 就绪/挂起(Ready/Suspend)
挂起状态特征
- 进程不能立即执行
- 进程可能在等待某个事件,也可能不等待事件,进程挂起与否与进程阻塞与否没有必然关系
操作系统的控制结构
操作系统利用表结构来管理
-
存储表(Memory Tables)
-
用于记录主存和辅存的当前状态
- 分配给进程的主存信息
- 分配给进程的辅存信息
- 主存块的保护属性(如进程可以访问的共享主存区域)
- 管理虚拟内存所需的其他信息
-
-
I/O设备表(I/O Tables)
-
管理I/O设备和计算机通道的当前状态
- I/O设备是否可用
- I/O操作的状态(正进行I/O操作)
- I/O操作要读写的主存单元地址
-
-
文件表(File Tables)
- 文件是否存在?
- 文件在辅存中的位置
- 文件当前状态
- 文件相关属性
- 管理文件所需的其他信息
- 通常都由文件管理系统维护和使用
-
进程表(Primary Process Tables)
-
进程放在什么位置
-
进程当前的状态信息
-
进程包括
- 程序代码
- 相关数据
- 进程控制快PCB
-
-
进程控制块
-
作用
- 记录进程存在和特性信息,与进程同生死,对进程的管理通过对PCB管理实现
-
PCB信息
-
进程标识信息
- 唯一地标识一个进程,有外部标识符(字母)和内部标识符(整数)两种
-
处理器状态信息
- 处理器各种寄存器内容组成,能恢复现场从断点处继续运行
-
进程控制信息
- 包括进程状态、队列指针、调度参数、进程已执行时间和已等待时间、进程间通信的信号系统、进程所分配的内存空间指针等
-
进程控制
执行模式
-
用户模式
- 通常在该模式下执行用户程序
- 权限较低
-
系统模式、控制模式或内核模式(管态)
- 在该模式下执行操作系统内核
- 可执行特权指令,权限更高
-
三个问题
-
为什么需要两种执行模式?
- 保护操作系统和重要数据不受用户干扰
-
处理器如何知道当前系统处于哪个执行模式下?
- 程序状态字(PSW)中管理程序/用户模式位记录了当前系统所处的模式信息
-
模式如何切换?
- 用户调用操作系统服务或发生中断时,执行模式从用户模式切换到内核模式
- 当系统服务返回或中断返回到用户进程时,执行模式从内核模式切换到用户模式
-
进程创建
- 给进程分配一个唯一的进程标识号
- 给进程分配空间
- 初始哈进程控制块
- 将进程控制块加入到正确的队列中
- 创建或扩充操作系统所需的其他数据结构
进程切换
-
何时进行进程切换
-
中断
- 时钟中断、I/O中断、内存失效等
-
陷阱
- 进程运行时出现错误或异常
-
系统调用
- 请求I/O操作,如打开文件
-
-
进程切换实现
- 保存处理器上下文环境,包括PC和其他寄存器
- 跟新当前处于运行态的进程的进程控制块
- 把上述进程的PCB移到相应的队列中
- 从就绪队列中选择另一个进程执行
- 更新所选择进程的进程控制块
- 更新内存管理的数据结构
- 恢复处理器在被选择进程最近一次切换出运行态的上下文:载入PC和其他寄存器最后一次保存的值
进程切换和模式切换的区别
- 模式切换时系统执行模式的改变,发生模式切换可以不改变正处于运行态的进程状态
- 进程切换时,操作系统必须使其运行环境发生改变
- 进程切换必然会存在模式切换,但模式切换不一定会发生进程切换
- 进程切换比模式切换更复杂
操作系统的执行
操作系统是不是一个进程?
-
无进程的内核
- 在所有进程之外执行操作系统内核
- 当前正在运行的进程发生中断或产生系统调用时,控制权交给内核
- 操作系统代码作为一个在特权模式下工作的独立实体被执行
- 进程的概念只适用于用户程序