6 进程和作业管理
撤销进程的实质:撤销PCB 具体操作:
1)找到要撤销进程的PCB; 2)从队列中撤销该进程及其所有子孙 进程; 3)释放资源,并撤销其PCB。
6.3.3 进程的挂起与恢复
1、进程挂起
挂起原语 将进程置于挂起状态——静止状态 激活原语 将进程由静止状态变为活动状态
2、激活进程
注意
(1) 分析进程间的制约关系,确定信号 量种类 (2) 信号量的初值与相应资源的数量有 关,也与P、V操作在程序代码中出现 的位置有关 (3)同一信号量的P、V操作要“成对” 出现,但在同步关系中它们分别在不同 的进程代码中
4、生产者-消费者问题
一个有代表性的进程同步问题
一组生产者进程和一组消费者进程通 过缓冲区发生联系 生产者进程将生产的产品送入缓冲区, 消费者进程则从中取出产品 假定缓冲区共有N个,我们不妨把它们 设想成一个环形缓冲池
注意:
(1) 用于实现互斥的P(mutex)和 V(mutex),须成对出现,即先做P 操作,进临界区;后做V操作,出 临界区。 (2) 互斥信号量mutex的初值一般 为1。
3、用P、V原语实现进程间同步
示例1:
供者 … 000000 信息 (buf空 ) 缓冲区
用者 …… (buf满 )
1、进程互斥与临界区
由于资源共享关系而产生的进程之间 的制约关系 临界资源
一次只允许一个进程使用的资源 以互斥关系使用的共享资源
临界区
进程中访问临界资源的那段代码(程序)
临界资源的访问过程
(1) 进入区 (2) 临界区 (3) 退出区 (4) 剩余区
2、互斥的概念与要求
1) 顺序性 2) 唯一对应性 3) 封闭性:独占全机资源 4) 可再现性
2、程序的并发执行特征
程序的并发执行:是指一组在逻辑上相 互独立的程序或程序段在执行过程中其 执行时间在客观上互相重叠。
Ii+1 I2 C1 Ci Ci Ci+1 I3 C2 Pi Pi+1 I4 C3 C4 P3 P4
互斥:一次只允许一个进程使用临界资 源的进程之间的相互制约关系 同步机制遵循的原则
① 空闲让进:有效利用临界资源 ② 忙则等待:保证诸进程互斥访问临界 资源 ③ 有限等待:避免进程陷入“死等” ④ 让权等待:避免进程陷入“忙等”
6.4.2 进程同步
异步 进程的同步:是指进程之间直接的协 同工作关系,是一些进程相互合作, 共同完成一项任务。 例:(p146) 从广义上说,互斥也是一种同步关系
P1 P2 P4 P5 P3 P6
进程控制 运行方式 资源共享
6.2 进程的结构
6.2.1 进程的实体(组成)
进程实体通常由程序、数据集合和 进程控制块(PCB)这三部分组成 PCB 程序部分 数据集合
6.2.2 进程控制块
1、进程控制块(PCB)
记录型数据结构 是OS为了反映进程的动态特性,便 于系统控制和描述进程的活动过程 而专门定义的一种数据结构 PCB是进程存在的唯一标志
Pj1
Pj2
…… …
Pjn
创建进程的主要任务:为进程建立 一个进程控制块(PCB)。
具体步骤:
1) 申请一空闲PCB; 2) 在PCB中填入相关信息——初始 化; 3) 将该进程置为就绪状态——分配 除CPU以外的其它资源; 4) 将PCB插入到就绪队列中——等 待调度获得CPU。
2、进程撤销
2) 并发性 3) 独立性 4) 制约性 5) 结构性
4、进程的类型
1) 系统进程和用户进程
管态/系统态 目态/用户态 在管态下执行的进程称为系统进程 在目态下执行的进程称为用户进程 区别:系统资源;I/O操作;活动状 态
2) 父进程和子进程
系统或用户首先创建的进程称为父进程 在父进程下面的进程称为子进程 进程族 父、子进程的关系:
1、进程的基本状态
1) 运行态
正在处理机上执行时的状态 具备运行条件等待获得CPU 进程因等待某种事件发生而暂时不能 运行的状态
2) 就绪态
3) 阻塞态(等待态)
2、进程状态的转换
a.新—就绪 b.就绪—运行 c.运行—阻塞 d.运行—就绪 e.运行—终止 f.阻塞—就绪
6.3 进程的控制
6.2.3 进程队列
1、线性方式
预先确定整个系统中同时存在的 进程的最大数目 静态分配空间 问题:
限定了系统中同时存在的进程的最 大数目 降低了调度效率
2、链接方式
按照进程的不同状态分别放在不 同的队列中,通过PCB结构内部 的拉链指针把同一队列的PCB链 接起来
6.2.4 进程的状态
I1 Ii
Ii
P1 P2 Pi 程序段并发执行的有向图
程序并发执行的特征:
1) 并发性 2) 动态性 3) 开放性——不可再现 4) 相互制约性
“执行—暂停—执行” 例如:
Ii Ci
Ci-1
3、进程的定义及其特征
进程的定义:
进程是程序在并发环境中的执行 过程。 是系统进行资源分配和调度的一 个独立单位。
PCB的信息内容
1) 进程名 2) 标识码 3) 进程的优先数 4) 位置信息 5) 状态信息
6) 现场信息 7) 通信信息 8) 占用资源 9) 其他
2、PCB的作用
① 记录进程的各种信息; ② 是进程存在的唯一标识; ③ 使程序成为一个能独立运行的 基本单位。
4、唤醒进程
唤醒原语将进程从阻塞状态转换成 就绪状态。 具体操作:
1)在等待队列中找到该进程,置其当 前状态为就绪状态; 2)将进程从等待队列中撤消,并插入 到就绪队列中,等待调度。
说明
进程由执行状态到阻塞状态,是进 程自己调用阻塞原语完成; 进程由阻塞状态到就绪状态,是另 一个发现者进程调用唤醒原语实现 的; 一般这个发现者进程是与被唤醒进 程合作的共行进程。
设有4个信号量:S1,S2,S3,S4,其 中,S2、S3分别表示缓冲区Bufferl和 Buffer2是否装满数据;S1、S4分别表 示缓冲区Bufferl和Buffer2是否为空。
初值分别为:S1=1;S2=0;S3=0;S4=1
进程copy 进程put 进程get … … … P(S2); P(S3); P(S1); P(S4); 将Buffer2内 从输入设备读数 据存入Buffer1; 将Buffer1的内容 容打印输出; 复制到Buffer2; V(S4); V(S2); V(S1); … … V(S3); …
out
使用方向 N-2 N-1 … … 3 2 0 1 in 供应 方向
有斜线的部分表示该缓冲区放有产品,否 则为空。in表示生产者下次存入产品的单元, out表示消费者下次取出产品的单元
同步条件:
① 生产者存放产品的单元数不能超过缓 冲区的总容量(N); ② 消费者取出产品的总量不能超过生产 者生产产品的总量。
in和out分别是生产者进程和消费者进 程使用的指针,指向下面可用的缓冲 区,初值都是0。
设置三个信号量:两个计数信号量full和 empty,一个互斥信号量mutex。
(1) 信号量的值减1,即S=S-1; (2) 如果 S≥0 ,则该进程继续执行;若 S<0,则该进程被阻塞,并将其PCB插入 S信号量的队列中等待,直到有其它进程 在S上执行V操作为止。
V(S)顺序执行以下两个动作:
(1) S值加1,即S=S+1; (2) 如果 S > 0 ,则该进程继续运行; 若S≤0,释放S信号量队列上的一个 等待进程,使之进入就绪队列;然 后,执行本操作的进程继续执行。
设S1和S2的初值均为0 用者进程
L2:… … P(S2); 从缓冲区取出信息 V(S1); 加工并存盘 goto L2;
供者进程
L1:启动读卡机 … … 收到输入结束中断 V(S2); P(S1) goto L1;
示例2
get S1 S2 Buffer1
copy S4
put S3
Buffer2
说明
信号量S的值表示某类资源的数量。 S>0,表示尚有资源可以分配; S<0,其绝对值表示等待队列中进程 的数目。 每执行一次P操作,意味着要求分配 一个资源; 每执行一次V操作,意味着释放一个 资源。
公用信号量:通常用于实现进程之 间的互斥,初值为1,它所联系的一 组进程均可对其实施P、V操作。 私用信号量:一般用于进程间的同 步,初值为0或为某个正整数n,仅 允许拥有它的进程对其实施P、V操 作。 Biblioteka 3、进程睡眠(阻塞)
阻塞原语把进程从执行状态转换为 阻塞状态 引起阻塞的可能原因:
1)请求系统服务; 2)启动设备操作; 3)新数据尚未到达; 4)无新工作可做。
具体操作:
1)中断CPU执行; 2)把CPU的当前状态保存到PCB的现 场信息中; 3)把进程的当前状态置为等待/阻塞 状态; 4)将进程的PCB插入到该事件的等待 队列中。