3 进程管理 【os】
资源分配和独立运行的基本单位是进程
3.1 进程的概念
顺序执行:单道批处理系统的执行方式 (严格按照顺序执行)顺序性,封闭性,可再现性
并发执行:提高资源利用率 逻辑上相互独立的程序或程序段在执行过程中执行时间上相互重叠
程序的并发执行会破会封闭性和可在线性,要使得并发执行不会对执行结果的封闭性和可再现性产生影响,需要满足 Bernstein
并发执行条件。
为了控制和协调各个程序段执行过程中的软硬件资源的共享和竞争,需要由一个描述各个程序段执行过程和共享资源的基本单位 进程
进程:一个具有独立功能的程序对某个数据集在处理机上的执行过程和分配资源的基本单位。
- 系统进程 (核心态,管态)
- 用户进程 竞争使用系统资源(用户态,目态)
3.2 进程的组成
程序 数据集合 进程控制块 PCB
存放进程的管理和控制信息的专门数据结构,与进程一一对应
进程上下文是对进程执行活动全过程的静态描述
- 用户级上下文
- 寄存器级上下文
- 系统级上下文
3.3 进程状态及其转换
基本状态: 就绪状态,等待状态,运行状态
3.4 进程控制
使用一些具有特定功能的程序段来创建、撤消进程以及完成进程各个状态之间的转换
- 进程创建
- 进程撤销
- 进程阻塞
- 进程唤醒
进程创建的手段:通过操作系统中的原语来实现
原语: 系统态下执行的完成系统特定功能的程序段 (不可分割的程序段,具有原子性,不允许被中断,且不能并发执行,是一种特殊的系统调用)
调用形式:均使用访管指令实现
中断性:系统调用在运行中可被中断
并发性:原语不允许并发执行
3.5 进程互斥
临界资源:一次仅允许一个进程使用的的资源称为临界资源,访问临界资源的代码为临界区
互斥:不允许两个或者两个以上的共享临界资源的并发进程同时进入临界区。
准则:
- 忙则等待
- 有限等待
- 让权等待
- 空闲让进
3.6 进程同步
3.8 进程间通信IPC
3.8.1 进程间通信的类型
- 低级通信:只传送控制信息(一个或者几个字节的信息)
- 高级通信:传送大批量的数据,目的是为了交换信息
另一种分类方式
- 直接通信 发送和接收时要指定对方的名字 (直接抵达,一对一的)
- 间接通信 发送进行发消息时不指定接收进行的名字,借助共享的数据结构作为通信中转(信箱)
3.8.2 进程间通信的方式
- 主从式 (主进程可以自由使用从进程的资源和数据,关系固定)
- 会话式
- 消息或邮箱机制 发送进程将所要发送的消息送入缓冲区或邮箱中
- 共享存储区方式
- 共享文件方式 (管道机制)
3.8.3 消息缓冲机制
3.8.4 邮箱机制
3.9 线程
简化线程之间的通信,以小的开销来提高进程内的并发速度。
3.9.1 线程的引入
进程的两个属性:资源的拥有者,调度单位 进程在切换时时空开销大
线程:轻量级进程,是进程中的一个实体,是一个 CPU
调度单位,资源的拥有者还是进程,即将原来进程的两个属性分开处理。
3.9.2 进程和线程的比较
3.10 死锁问题
3.10.1 死锁的定义
两个或者多个进程无止境地等候着永远不会成立的条件的一种系统状态
产生死锁的原因:
- 竞争资源
- 进程推进顺序不合理
3.10.2 产生死锁的必要条件
- 互斥条件 (临界资源)
- 部分分配(请求和保持条件) 继续占有已经分配到的资源
- 不剥夺条件 没有使用完之前不被剥夺,只能在使用完之后由自己释放
- 环路条件
3.10.3 死锁的排除方法
-
预防死锁 预先设置限定条件破坏四个必要条件
- 资源预先分配
- 资源有序分配
-
避免死锁 安全状态,银行家算法
-
检测与解除死锁