进程控制与同步
Catalogue
① 进程控制的基本过程
进程的创建
- 申请空白PCB
- 为新进程分配资源 — 主要是内存资源的处理
- 初始化进程控制块
标识符(包括父进程的)、程序计数器指向程序入口地址,就绪态、优先级等信息的填写。 - 将新进程插入就绪队列
原语是由若干指令构成的原子操作过程,作为整体实现功能,不可被打断。
进程的终止
引起终止的事件
- 正常结束
- 异常结束
- 外界干预
进程的阻塞与唤醒
由进程调用阻塞原语阻塞自己,是主动行为
-
原因:
a) 请求系统服务的满足情况 b) 启动某种需等待(I/O)操作 c) 新数据尚未到达 d) 执行某功能的进程暂时无新工作可做(如发送数据进程)
-
阻塞过程
a)将PCB中的状态改为阻塞 b)该PCB加入到阻塞队列中 c)转进程调度,将处理机分配给另一进程 d)进行进程切换,即根据两切换进程的PCB,保护与重新设置处理机状态
-
唤醒过程
a)把阻塞进程从等待该事件的阻塞队列中移出 b)将其PCB中的现行状态改为就绪 c)将PCB插入到就绪队列中
进程的挂起和激活
② 进程同步
主要任务:
使并发执行的诸进程之间能有效地共享资源和相互合作,从而使程序的执行具有可再现性。
互斥同步
互斥:
在操作系统中,当一个进程进入临界区使用临界资源时,另一个进程必须等待,直到占用临界资源的进程退出临界区,我们称进程之间的这种相互制约关系为“互斥”。
同步:
多个相互合作的进程,在一些关键点上可能需要互相等待或互相交换信息,这种相互制约关系称为进程同步关系。可理解为“有序”。
临界区
每个进程中访问临界资源的那段代码叫临界区
同步机制应遵循的规则
空闲让进:资源使用最基本原则
忙则等待:保证互斥
有限等待:合适时被唤醒防止死等
让权等待:能主动释放CPU防止忙等
关中断
进入锁测试前关闭中断,直到完成锁测试并上锁后才能打开中断。进程在临界区执行期间,系统不响应中断,从而不引发调度。
缺点:
滥用风险
关中断时间过长会影响效率,限制CPU交叉执行能力
不适用于多CPU系统
整形信号量
信号量定义为一个整型量
根据初始情况赋相应的值
仅能通过两个原子操作来访问
P操作
wait(S):
While S<=0 do no-op;
S:=S-1;
V操作
signal(S):
S:=S+1;
Copyright © 2018 VeteranDog . All rights reserved.