进程
目的:更好地描述和控制程序的并发执行
定义:进程是进程实体的一次执行,是系统进行资源分配和调度的一个独立的单位
组成
PCB:保存进程运行期间的相关数据,是进程存在的唯一标志
程序段:能被进程调度程序调度到CPU运行的程序的代码段
数据段:存储程序运行期间的相关数据,可以是原始数据也可以是相关结果
进程的状态
状态的种类
运行状态:进程在处理机上运行
就绪状态:进程已获得了除处理机之外的一切所需资源
阻塞状态:进程正在等待某一事件而暂停运行
创建状态:进程正在被创建,尚未转到就绪状态
结束状态:进程正从系统中消失,分为正常结束和异常退出
转态的变化
就绪 --> 运行 :经过处理机调度,就绪进程得到处理机资源
运行 --> 就绪 :时间片用完或在可剥夺系统中有更高优先级进程进入
运行 --> 阻塞 :进程需要的某一资源还没准备好
阻塞 --> 就绪 :进程需要的资源已准备好
进程控制
创建:终端用户登录系统、作业调度、系统提供服务、用户程序的应用请求等
终止:正常结束、发生异常、外界干预
阻塞:等待资源
唤醒:资源到达
切换:时间片用完、主动放弃处理机、被更高优先级的进程剥夺处理机
进程的通信
共享存储
低级方式:基于数据结构的共享
高级方式:基于存储区的共享
消息传递
直接通信方式:直接把消息挂到接收进程的消息队列
间接通信方式:挂到某个中间实体,接收进程找实体接收消息 类似电子邮件
代价
时间代价:进行进程间的切换、同步及通信等所付出的时间开销
空间代价:进程控制块以及协调各运行机构所占用的内存空间开销
线程
引入目的:为了更好地使多道程序并发执行,以提高资源利用率和系统吞吐量,增加程序的并发性
特点:是程序执行的最小单元,基本不拥有任何资源
实现方式:用户级线程、系统级线程
调度
调度层次
作业调度(高级调度):选择处于后备状态的作业分配资源,发生频率最低
内存调度(中级调度):选择暂时不能运行的进程调出内存,发生频率中等
进程调度(低级调度):选择就绪队列中合适的进程分配处理机,发生频率最高
进程调度的原因:合理的处理计算机软件硬件资源
进程调度方式
剥夺式:有更为重要的或紧迫的进程需要使用处理机,立即分配
非剥夺式:有更为重要的或紧迫的进程需要使用处理机,仍让当前进程继续执行
典型的调度算法
先来先服务:选择最先进入队列的
短作业优先:选择完成时间最短的
优先级调度:选择优先级最高的
高响应比优先:选择相应比最高的
时间片轮转:总是选择就绪队列中第一个进程,但仅能运行一个时间片
多级反馈队列:时间片轮转调度算法和优先级算法的综合和发展
进程同步
引入原因:协调进程之间的相互制约关系
制约关系
同步:需要在某些位置上协调进程之间的工作次序而等待、传递信息所产生的制约关系
互斥:当一个进程进入临界资源区使用临界资源时,其他要求“进入临界区”或“进区”必须等待
临界资源:一次仅允许一个进程使用的资源
临界区互斥
原则:空闲让进、忙则等待、有限等待、让权等待
基本方法
软件实现
单标志法:违背“空闲让进”的原则
双标志法先检查:违背“忙则等待”原则
双标志后检查:会导致“饥饿”现象
皮特森算法:单标志和双标志后检查的结合
硬件实现
中断屏蔽法:进区关中断、出区开中断
硬件指令法:设立原子操作指令
信号量:利用PV操作实现互斥
管程
定义:有一组数据以及定义在这组数据之上的对这组数据的操作组成的软件模块
组成
局部于管程的共享结构数据说明
对该数据结构进行操作的一组过程
对局部于管程的共享数据设置初始值的语句
死锁
产生原因:非剥夺资源的竞争和进程的不恰当推进顺序
定义:多个进程因竞争资源而造成的一种僵局(相互等待),若无外力作用,这些进程无法向前推进
解决方案
预防死锁
破坏互斥条件:有些资源必须互斥使用,无法破坏互斥条件
破坏不可剥夺条件:增加系统开销,降低吞吐量
破坏请求和保持条件:严重浪费系统资源,还可能导致饥饿现象
破坏循环等待条件:浪费系统资源,并造成编程不便
避免死锁
安全状态:能找到一个分配资源的序列能让所有的进程都顺序完成
银行家算法:采用预分配策略检查分配完成时系统是否处在安全状态
检测死锁
利用死锁定理化简资源分配图以检测死锁的存在
解除死锁
资源剥夺法:挂起某些死锁进程并抢夺它的资源,以便其他进程继续推进
撤销进程法:强制撤销部分、甚至全部的死锁进程并剥夺这些进程的资源
进程回退法:让一个或者多个进程回退到足以回避死锁的地步