文章目录
进程管理
进程与线程
定义
- 由程序段,相关数据段和PCB三部分便构成了进程实体(又称进程映像,简称进程)
- PCB 进程控制块,系统利用PCB来描述进程的基本情况和活动过程,进而控制和管理内存
- 进程是进程实体的运行过程,是系统进行资源分配的和调度的一个独立单位
特征
- 动态性
- 并发性
- 独立性
- 异步性
状态与转换
- 就绪状态
- 通常按照一定的策略排成 就绪队列
- 执行状态
- 阻塞状态
- 通常系统将处于阻塞状态的的进程排成阻塞队列
- 创建状态
- 创建进程时假设所需资源不能得到满足,创建工作未完成,此时所处状态为创建状态
- 终止状态
- 挂起操作
- 该操作作用于某个进程时,该进程会被挂起,该进程处于禁止状态
- 如果进程正在执行,他将暂停执行
- 若原本处于就绪状态,则该进程此时不接受调度
- 与挂起操作对应的操作是激活造作
进程管理中的数据结构
进程信息表(资源信息表)
- 内存表
- 设备表
- 文件表
- 进程表(PCB)
PCB
- 作用
- 作为独立运行基本单位的标志
- 能够实现间断性运行方式
- 提供进程管理所需的信息
- 提供进程调度所需信息
- 实现与其他进程的同步与通信
- 信息
- 进程标识符
- 处理机状态
- 进程调度信息
- 进程控制信息
- 组织方式
- 线性
- 链接
- 索引
进程控制
OS内核
功能
- 支撑功能
- 中断处理
- 时钟管理
- 原语操作
- 资源管理功能
- 进程管理
- 存储器管理
- 设备管理
进程创建
-
进程图
- 用于描述进程间关系的一颗有向树
-
引起创建进程的事件
- 用户登录
- 作业调度
- 提供服务
- 应用请求
-
进程的创建
- 申请空白PCB,为新进程申请获得唯一的数字标识符,并从PCB集合中索取一个空白PCB
- 为新进程分配其运行所需的资源
- 初始化进程控制块PCB
- 如果进程就绪队列接纳新进程,便将新进程插入就绪队列
进程终止
- 引发终止的事件
- 正常结束
- 异常结束
- 外界干扰
- 终止过程
- 根据被终止进程的标识符从PCB集合中检索出该进程的PCB,从中读出该进程的状态
- 若是执行状态,应立即终止该进程的执行,并置调度标志为真,用于指示该进程被终止后应重新进行调度
- 若还有子孙进程,还应将所有子孙进程也都终止,以防他们变成不可控的进程
- 将被终止所拥有的资源归还给父进程或系统
- 将被终止进程PCB从所在队列或链表中移出,等待其他程序来搜集信息
进程阻塞与唤醒
- 引发事件
- 向系统请求共享资源失败
- 等待某种操作完成
- 新数据未到达
- 等待新任务到达
- 进程阻塞过程
- 正在执行的的进程,如果发生阻塞事件,进程通过调用阻塞原语block将自己阻塞,可见阻塞是进程自身的一种主动行为
- 立即停止进程执行,把进程控制块中现行状态由执行改为阻塞,并将PCB插入到阻塞队列,如果系统因不同事件阻塞的多个队列,应将进程插入到相同事件的阻塞队列
- 最后转调度程序进行重新调度,将处理机分配给另一就绪进程,并进行切换
- 进程唤醒过程
- 当被阻塞进程所期待的事件发生时,由有关进程调用唤醒原语wakeup,将等待该事件的进程唤醒
- 首先把被阻塞的进程从等待该事件的阻塞队列中移出,将其PCB中的现行状态由阻塞改为就绪,将该PCB插入就绪队列中
进程挂起与激活
- 挂起(suspend执行过程)
- 首先检查挂起进程的状态,若处于活动就绪状态,便将其改为禁止就绪,对于活动阻塞状态进程,则将之改为静止阻塞,为了方便用户或父进程考察该进程的运行情况,而把该进程的PCB复制到指定的内存区
- 最后若被挂起的的进程正在执行,则转向调度程序重新调度
- 激活过程(active执行过程)
- 先将进程从外存调入内存,检查该进程的现行状态,若静止就绪,将之改为活动就绪,若为静止阻塞,将其改为活动阻塞
- 假设采用抢占调度策略,则每当有静止就绪进程被激活而插入就绪队列时,便检查是否要进行重新调度,即由调度程序将被激活的进程与当前进程两者的优先级进行比较,如果被激活进程优先级低,就不必重新调度,否则剥夺当前进程的运行,把处理机分配给刚刚被激活的进程
进程同步
- 主要任务是对多个相关进程在执行次序上进行协调,使并发执行的诸进程之间按照一定的规则或次序共享系统资源,并能很好的相互合作,从而使程序的执行具有可再现性
基本概念
- 两种形式的制约关系
- 间接制约关系
- 直接制约关系
- 临界资源
- 临界区
- 把每个进程中访问临界资源的那段代码称为临界区
- 访问临界资源的循环进程描述为:
while(TURE): { 进入区 临界区 退出区 剩余区 }
- 同步机制规则
- 空闲让进
- 忙则让出
- 有限等待
- 让权等待
硬件同步机制
- 关中断
- 利用test-and-set 指令实现互斥
- 利用swap指令实现互斥
信号量机制
- 整型信号量
- 记录型信号量
- AND型信号量
- 信号量集
信号量的应用
- 实现进程互斥
- 实现前趋关系
管程机制
- 定义
- 代表共享资源的数据结构以及由对该共享数据结构实施操作的一组过程所组成的资源管理程序共同构成一个操作系统的资源管理模块,我们称之为管程
- 一个管程定义了一个数据结构和能为并发进程所执行的一组操作,这组操作能同步进程和该表管程中的数据
- 特性
- 模块化
- 抽象数据结构
- 信息掩蔽
- 与进程的区别
- 条件变量
经典进程同步问题
生产者消费者问题
哲学家进餐问题
读者写者问题
进程通信
进程通信类型
- 共享存储系统
- 管道通信系统
- 消息传递系统
- 客户机服务器系统
消息传递通信的实现方式
- 直接消息传递系统
- 信箱通信
线程
- 线程是独立调度的基本单位
- 一个进程可以由多个线程,他们共享进程资源
- 线程进程的区别
进程 | 线程 | |
---|---|---|
拥有资源 | 资源分配的基本单位 | 不拥有资源,可以访问隶属进程的资源 |
调度 | 独立调度的基本单位,同一进程中线程切换不回引起进程切换,进程之间的线程切换回引起进程切换 | |
系统开销 | 创建或撤销进程时,系统都会为之分配资源,所以开销大;在进程切换时涉及CPU环境保存和新进程的CPU环境的设置,所以开销大 | 线程切换只保留和设置少量寄存器内容,开销小 |
通信 | 借助IPC | 直接读写同一进程的数据进行通信 |