进程管理
进程就是执行中的程序,是系统进行资源分配和调度的基本单位,其使得操作系统资源利用率大幅提升。由程序块、进程控制块(PCB)和数据块三部分组成。
进程控制块(PCB)
进程控制块是用于描述和控制进程运行的通用数据结构,来记录进程当前状态和控制进程运行的全部信息,使得进程是能够独立运行的基本单位。是常驻内存的,进程控制块的组成
- 标识符 唯一标记一个进程,就是进程id
- 状态 标记进程的进程状态,如运行态
- 优先级
- 程序计数器 进程即将被执行的下一条指令的地址
- 内存指针 程序代码、进程数据相关指针
- 上下文数据 进程执行时处理器存储的数据
- IO状态信息 被进程IO操作所占用的文件列表
- 记账信息 进程使用处理器时间、时钟数总和等
进程和线程
- 进程是系统进行资源分配和调度的基本单位
- 线程是操作系统进行运行调度的最小单位,包含在进程之内
进程内的多个线程共享进程内的资源
进程同步
- 空闲让进:资源无占用,允许使用
- 忙则等待:资源有占用,请求进程等待
- 有限等待:保证有限等待时间能够使用资源
- 让权等待:等待时,进程需要让出CPU
进程同步的方法,如消息队列、共享存储、信号量等
进程的三态模型
- 运行 当一个进程在CPU上运行时
- 就绪 一个进程获得了除CPU之外的一切所需资源,一旦得到CPU即可运行
- 阻塞 也称等待或睡眠状态,一个进程正在等待某一事件发生而暂时停止运行,这时即使把CPU分配给进程也无法运行
只有就绪状态可以到达运行态
PV操作
信号量是一种特殊的变量,用来表示资源的数量,如果为负数则表示排队的进程数
- P操作是指申请/锁定资源 S = S - 1
- V操作是指释放/解锁资源 S = S + 1
互斥模型时,信号量S初值一般不是0,先P后V;
同步模型时,信号量S初值是0,先V后P
前趋图
- 一个有向无循环图,X->Y X是Y的前驱,Y是X的后继,要X执行结束Y才可以执行
- 程序顺序执行时的主要特征包括顺序性、封闭性、可再现性
- X————->Y X结束V(s1)操作 Y开始前P(s1)操作 信号量初始值0
可以通过前趋图来推出来PV操作
该对应的PV操作如下
死锁
死锁是指两个或两个以上的进程互相都要求对方已经占有的资源导致无法继续运行下去
死锁的四大条件:
- 互斥
- 保持与等待
- 不剥夺
- 环路等待
死锁的处理
- 预防死锁:打破死锁的四大条件
- 避免死锁:银行家算法
- 死锁的检测与解除
进程资源图
进程资源有向图由方框、圆圈和有向边组成。方框代表资源(方框内多个圈表示有多个资源),圆圈代表进程
- 进程P->资源R 申请资源; 资源R->进程P 是分配资源
- 先分配资源给进程,再让进程去申请资源,如果申请不到资源,那么进程就是阻塞的。如果没有一个进程是非阻塞的,那么进程资源图就是不可化简的,是死锁的。如果有进程是非阻塞的,那么就有可能是可化简的,需要判断是否可以运行完所有的进程