进程管理
进程
概念
- 是进程实体的运行过程,是系统进行资源分配和调度的独立单位
进程和程序
-
- 进程是动态的
2.程序是静态的、一组指令的集合
3.程序不被加载时,在磁盘上
4.只有当程序被加载的时候(加载到内存),程序才会变成进程
- 进程是动态的
进程特征
-
动态性(最基本)
-
并发性
- 引入进程的目的就是为了提高系统的并发能力
-
独立性
- 每个进程都可以作为一个独立接收系统分配和调度资源
-
异步性
- 不同的进程可能运行的速度并不相同(受到中断等)
-
结构性
- PCB
进程实体:
程序段+数据段+进程控制段
进程状态
进程控制
-
进程创建——创建原语
- 1.为新进程分配一个唯一的PID(进程标识号)
2.为进程分配资源(内存)
3.初始化PCB(设置进程优先级等)
4.将新进程插入就绪队列
- 1.为新进程分配一个唯一的PID(进程标识号)
-
进程终止——撤销原语
- 1.根据被终止的进程标识符,检索PCB,读出进程状态
2.更新PCB(进程状态标记为“终止”)
4.将该进程的所有资源归还操作系统
5.将PCB从其所处的队列中删除
- 1.根据被终止的进程标识符,检索PCB,读出进程状态
-
进程的阻塞——阻塞原语(Block)
- 1.根据需要阻塞的PID找到其对应的PCB
2.保护现场,更新PCB:转为阻塞状态
3.将PCB插入阻塞队列
- 1.根据需要阻塞的PID找到其对应的PCB
-
进程的唤醒——唤醒原语(Wakeup)
- 1.根据需要唤醒的PID从阻塞队列中找到对应的PCB
2.将其从阻塞队列中移出,进程状态改为就绪态
3.把该PCB插入就绪队列中,等待调度
- 1.根据需要唤醒的PID从阻塞队列中找到对应的PCB
-
进程切换
- 1.保存处理机上下文,(程序计数器和其他寄存器)
2.更新当前正在运行进程的PCB(包括进程状态从运行到就绪/阻塞,可能包括进程优先级)
3.载入要切换的进程上下文
4.更新切换进来进程的PCB(同样包括进程状态或者进程优先级)
5.执行新进程
- 1.保存处理机上下文,(程序计数器和其他寄存器)
-
进程组织
-
进程控制块(PCB)
- 1.进程描述信息——PID,UID
2.进程控制和管理信息——进程状态,进程优先级
3.资源分配清单
4.处理机相关信息
- 1.进程描述信息——PID,UID
-
程序段
-
相关数据段
-
-
进程通信
-
共享空间
- 多个程序共享一个文件空间,从其中取出数据完成通信
-
管道
- 通过一个pipe文件,这个文件是两个进程所能够访问的,是一个共享文件,通过这个共享的文件能够实现两个进程间的数据交互
-
消息传递
-
直接
-
间接
-
-
线程
线程概念
-
轻量级进程
-
不拥有系统资源
-
最小的执行单元
-
线程是独立调度的基本单位
线程与进程的区别
-
调度
- 进程是拥有资源的基本单位
-
拥有资源
-
进程有
-
线程没有
-
-
并发性
- 都可以
-
系统开销
- 线程更小
-
资源可见性
- 1.同一个进程的线程之间资源可见(共享进程资源)
2.不同进程的线程地址空间独立
- 1.同一个进程的线程之间资源可见(共享进程资源)
线程属性
-
唯一标识符
-
线程控制块
-
线程状态和进程状态一样
线程实现方式
-
用户级线程
- 内核中不留线程,全部线程都放在用户空间中创建
-
内核级线程
- 内核中创建每一个所需要的线程,创建好之后映射到用户空间
-
混合线程模式
- 结合以上两种方式,内核和用户空间都有线程,但不是一个内核级线程映射一个用户线程,可能是多个
处理机调度
调度的概念
- 调度是处理机对于将要在其上运行的进程的一种安排
调度的层次
-
高级调度
-
作业调度
- 决定哪个进程进入内存
-
-
低级调度
-
进程调度
-
决定哪个进程上CPU运行
-
最常进行的
-
最基本的 不可或缺的
-
-
-
中级调度
-
内存调度
-
决定进程优先级 + 挂起/唤醒进程
-
提高内存利用率和系统吞吐量
-
-
调度方式
-
剥夺式
-
有优先级更高的进程,则立即终止当前正在运行的进程
-
优点
- 1.提升系统吞吐率
2.响应效率高
- 1.提升系统吞吐率
-
-
非剥夺式
-
不管有多紧急的任务都需要让当前的进程执行完毕
-
优点
- 1.适用于大多数批处理系统
2.实现简单,开销小
- 1.适用于大多数批处理系统
-
调度准则
-
CPU利用率
- 时刻保持CPU运行
-
系统吞吐量
-
表示单位时间内CPU处理的作业数量
-
所以不能让一个长作业一直占用CPU
-
-
周转时间
-
作业从提交到完成的时间
-
周转时间 = 作业完成时间 - 作业提交时间
-
带权周转时间 = 作业周转时间 / 作业实际运行时间
-
-
等待时间
-
响应时间
调度算法
-
先来先服务(FCFS)算法
-
谁先来就运行谁
-
优点
-
简单
-
对长作业有利
-
有利于CPU繁忙型作业
-
-
-
短作业优先(SJF)算法
-
运行已经到达的、预计运行时间最短的进程
-
缺点
- 导致饥饿
-
-
高响应比(HRRN)算法
-
在短作业优先的基础上,等待时间越长/需要运行时间短,响应比越高,越应该被执行
-
响应比 = (等待时间+要求服务时间) / 要求服务时间
-
-
优先级调度算法
-
抢占式 & 非抢占式
-
优先级
-
静态
-
动态
-
-
-
时间片轮转调度算法
-
抢占式
-
分配的时间到达就轮到下一个
-
进程切换频繁的话就会使得开销增大
-
-
多级反馈队列调度算法(最优秀的)
-
设置多级队列,每个队列都有优先级,每个队列里都是先来先服务原则
-
不会导致饥饿
-
进程同步
概念
- 对于多个进程的运行过程进行安排
临界资源
- 一次只能一个进程使用的资源
互斥
-
空闲让进
-
忙则等待
-
有限等待
-
让权等待
- 当进程不能进入临界区时,应当立即释放处理器
信号量
-
p操作
- 先占有资源,再阻塞同信号进程
-
v操作
- 先释放资源,再唤醒同信号进程
死锁
-
死锁条件
-
循环等待
- 顺序分配策略
-
请求保持
-
不可抢占
-
互斥使用
-
银行家算法
- (当前可用,已分配,还需要)