操作系统期末复习总结
第二章 进程的描述与控制
2.1 前趋图和程序执行
2.1.1 前趋图
定义:是指一个有向无循环图,可记为DAG(Directed Acyclic Graph)它用于描述进程之间执行的先后顺序。图中的每个结点可用来表示一个进程或程序段,乃至一条语句,结点间的有向边则表示两个结点之间存在的偏序(Partial Order)或前趋关系(Precedence Relation)(用→表示)
2.1.2 程序顺序执行
- 程序的顺序执行
通常,一个应用程序由若干个程序段组成,每一个程序段完成特定的功能,它们在执行时,都需要按照某种先后次序顺序执行,仅当前一程序段执行完后,才运行后一程序段
2、程序顺序执行时的特征
①顺序性:指处理机严格地按照程序所规定的顺序执行,即每一操作必须在下一操作开始之前结束
②封闭性:程序运行时独占全机资源,资源的状态(除初始状态外)只有本程序才能改变它,程序一旦开始执行,其执行结果不受外界因素影响
③可再现性:指只要程序执行时的环境和初始条件相同,当程序重复执行时,不论是从头到尾执行还是“停停走走”地执行,都可获得相同的结果
2.1.3 程序并发执行
特征
①间断性
②失去封闭性
③不可再现性
2.2 进程的描述
2.2.1 进程的定义和特征
1、进程的定义
(动态性)进程的定义:进程是进程实体的运行过程,是系统进行资源分配和调度的一个独立单位
PCB(进程控制块):①进程描述信息 ②进程控制和管理信息 ③资源分配清单 ④处理机相关信息
PCB,程序段(存放代码),数据段(存放数据)三部分构成了进程实体(进程映像)
2、进程的特征
(1)动态性(最基本的特征)
(2)并发性。是指多个进程实体同存与内存中,且能在一段时间内同时运行
(3)独立性。是指进程实体是一个能独立运行、独立获得资源和独立接受调度的基本单位
(4)异步性。是指进程是按异步方式运行的
2.2.2 进程的基本状态及转换
1、进程的基本状态
(1)就绪(Ready)状态:指进程已处于准备好运行的状态(只要获得CPU,便可立即执行)
(2)执行(Running)状态:指进程已经获得CPU,其程序正在运行的状态
(3)阻塞(Block)状态:正在执行的进程由于发生某事件(如I/O请求、申请缓冲区失败等)暂时无法继续执行时的状态,亦即进程的执行受到阻塞
2、三种基本状态的转换
3、创建状态和终止状态
(1)创建进程:创建态,进程正在被创建
(2)撤消状态:终止态,进程正在从系统中撤销
2.2.3 挂起操作和进程状态的转换
1、挂起操作的引入原因
(1)终端用户的需要
(2)父进程的请求
(3)负荷调节的需要
(4)操作系统的需要
(5)对换的需要
2、引入挂起原语操作后三个进程状态的转换
(1)活动就绪→静止就绪
(2)活动阻塞→静止阻塞
(3)静止就绪→活动就绪
(4)静止阻塞→活动阻塞
3、引入挂起操作后五个进程状态的转换
①NULL→创建
②创建→活动就绪
③创建→静止就绪
④执行→终止
2.2.4 进程管理中的数据结构
进程控制块PCB的作用
原因:为了便于系统描述和管理进程的运行,在OS的核心为每个进程专门定义了一个数据结构-----进程控制块PCB(Process Control Block)
PCB作用:
是一个在多道程序环境下不能独立运行的程序(含数据)成为一个能独立运行的基本单位,一个能与其他进程并发执行的进程
①作为独立运行基本单位的标志
②能实现间断性运行方式
③提供进程管理所需要的信息
④提供进程调度所需要的信息
⑤实现与其他进程的同步与通信
进程控制块中的信息
1、进程标识符
(1)外部标识符
(2)内部标识符
2、处理机状态
3、进程调度信息
4、进程控制信息
①程序和数据的地址
②进程同步和通信机制
③资源清单
进程控制块的组织方式
(1)线性方式:即将系统中所有的PCB都组织在一张线性表中,将该表的首址存放在内存的一个专用区域中
(2)链接方式:即把具有相同状态进程的PCB分别通过PCB中的链接字链接成一个队列
(3)索引方式
2.3进程控制
进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程,撤销已有进程,实现进程状态转换等功能
①系统态:又称为管态
②用户态:又称目态
1、支撑功能
(1)中断处理,中断处理是内核最基本的功能,是整个操作系统赖以活动的基础,OS中许多重要的活动(如各种类型的系统调用、键盘命令的输入、进程调度、设备驱动)无不依赖于中断
(2)时钟管理
(3)原语操作(不可被中断)
①更新PCB中的信息
②将PCB插入合适队列
③分配/回收资源
2、资源管理功能
(1)进程管理(全部或大部分放入内核)
(2)存储器管理
(3)设备管理
2.3.2 进程的创建
1、引起创建进程的事件
(1)用户登录
(2)作业调度
(3)提供服务
(4)应用请求
2、进程的创建(Creation of Process)
①申请空白PCB
②为新进程分配资源
③初始化进程控制块(PCB)
④如果进程就绪队列能够接纳新进程,便于新进程插入就绪队列
2.3.3 进程的终止
1、引起进程终止的事件
(1)正常结束,表示进程的任务已经完成
(2)异常结束
①越界错
②保护错
③非法指令
④特权指令错
⑤运行超时
⑥等待超时
⑦算术运算错
(3)外界干预
①操作员或操作系统干预
②父进程请求
③因父进程终止
2.3.4 进程的阻塞与唤醒
1、引起进程阻塞和唤醒的事件
(1)向系统请求共享资源失败
(2)等待某种操作的完成
(3)新数据尚未到达
(4)等待新任务的到达
2、进程阻塞过程
①立即停止执行
②将PCB插入阻塞队列
③将本进程插入到具有相同事件的阻塞队列
④转调度程序进行重新调度
3、进程唤醒过程
①把被阻塞的进程从等待该事件的阻塞队列中移出
②将其PCB中的现行状态由阻塞改为就绪
③将该PCB插入到就绪队列中
2.4 进程同步
2.4.1 进程同步的基本概念
1、两种形式的制约关系
(1)间接相互制约关系
(2)直接相互制约关系
2、临界区
多个进程必须互斥地对资源进行访问,人们把在每个进程中访问临界资源的那段代码成为临界区(critical section)
访问临界资源的循环进程描述:
while(TURE)
{
进入区
临界区
退出区
剩余区
}
3、同步机制应遵循的规则
(1)空闲让进:当无进程处于临界区时,表明临界资源处于空闲状态,应允许一个请求进入临界区的进程进入自己的临界区,以有效地利用临界资源
(2)忙则等待:当已有进程进入临界区时,表明临界资源正在被访问,因而其它试图进入临界区的进程必须等待,以保证对临界资源的互斥访问
(3)有限等待:对要求访问临界资源的进程,应保证在有限时间内能进入自己的临界区,以免陷入“死等”状态
(4)让权等待:当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入“忙等”状态
2.4.2 硬件同步机制
1、关中断(关中断是实现互斥地最简单的方法之一)
缺点:①滥用关中断权力可能导致严重后果
②关中断时间过长,会影响系统效率,限制了处理器交叉执行程序的能力
③关中断方法也不适用于多CPU系统,因为在一个处理器上关中断并不能防止进程在其它处理器上执行相同的临界段代码
2、利用Test-and-Set指令实现互斥
Boolean TS(Boolean *lock){
boolean old;
old=*lock;
*lock = TRUE;
return old;
}
3、利用Swap指令实现进程互斥
void swap(boolean *a,boolean *b)
{
boolean temp;
temp = *a;
*a = *b;
*b = temp;
}
2.4.3 信号量机制
1、整型信号量
P、V操作。wait和signal操作描述
wait(S){
while(S<=0);
S--;
}
signal(S)
{
S++;
}
2、记录型信号量
typedef struct{
int value;
struct process_control_ *list;
}semaphore;
相应地,wait(S)和signal(S)操作如下:
wait(semaphore *S){
S->value--;
if(S->value<0)block(S->list);
}
signal(semaphore *S){
S->value++;
if(S->value<=0)wakeup(S->list);
}
3、AND型信号量
4、信号量集