当前位置:文档之家› 操作系统教程第5版第3章【PV】

操作系统教程第5版第3章【PV】


1
while(free); free=true;
临界区
3
free=false;
临界区 free=false;
……
……
Step3: Q下CPU,P上CPU;此时两个进程都在临界区!
该方法有问题。
30
软件方法1
free:临界区空闲标志 true:有进程在临界区;false:无进程在临界区
初值:free为false
27
软件方法1 free:临界区空闲标志
true:有进程在临界区;false:无进程在临界区 初值:free为false
P:
Q:
……
……
while(free); CPU free=true;
1
while(free); free=true;
临界区
临界区
free=false;
free=false;
……
……
Step1: P先上CPU
28
软件方法1
free:临界区空闲标志 true:有进程在临界区;false:无进程在临界区 初值:free为false
P:
Q:
……
…… CPU 2
while(free); CPU free=true;
1
while(free); free=true;
临界区
P: …… while(not turn); 临界区 turn=false; ……
Q: …… while(turn); 临界区 turn=ture; ……
若P想进临界区,由于turn=false;进不了; 同时Q进程始终不准备进临界区,即使临界区一直没有进程, 但P一直无法进入临界区 该方法,违反了使用临界区的原则
22
4.2.1 互斥与临界区(1)
并发进程中,与共享变量有关的程序段叫“临 界区”, 共享变量代表的资源叫“临界资源” 。
与同一变量有关的临界区分散在各进程的程序 段中,而各进程的执行速度不可预知。
如果保证进程在临界区执行时,不让另一个进 程进入临界区,即各进程对共享变量的访问是 互斥的,就不会造成与时间有关的错误。
临界区
free=false;
free=false;
……
……
Step2: P下CPU ,Q上CPU
29
软件方法1
free:临界区空闲标志 true:有进程在临界区;false:无进程在临界区 初值:free为false
P:
Q:
……
…… CPU 2
while(free); CPU
free=true;
进程执行的并发性:一组进程的执行在时间上是重叠的。 并发性举例:有两个进程A(a1、a2、a3)和B(b1、b2、b3)
并发执行。
a1、a2、a3、b1、b2、b3 顺序执行
a1、b1、a2、b2、a3、b3 并发执行
从宏观上看,并发性反映一个时间段中几个进程都在同一 处理器上,处于运行还未运行结束状态。
进程同步:为完成共同任务的并发进程基于某个 条件来协调它们的活动,因为需要在某些位置上 排定执行的先后次序而等待、传递信号或消息所 产生的协作制约关系。
进程互斥关系是一种特殊的进程同步关系,即 逐次使用互斥共享资源,是对进程使用资源次 序上的一种协调。
18
4.2 临界区管理
4.2.1 互斥与临界区 4.2.2 实现临界区管理的几种尝试 4.2.3 实现临界区管理的软件方法 4.2.4 实现临界区管理的硬件设施
p1
f
p2
g
g1
c1

c2
ci
pi
g2
g3
两者先后顺序任意 并发环境下进程间的制约关系
12
3、与时间有关的错误(例子3 )
//飞机票售票问题 void T1( ) { {按旅客订票要求找到Aj};
int X1=Aj; if(X1>=1) {
X1- -; Aj=X1; {输出一张票}; } else {输出信息"票已售完"}; }
19
竞争条件(空闲区域7)
打印目录

4
abc
5
Prog.c
Process A
6
Hi.c
7
Process B
out=4 in=7
进程A 和B 都申请把要打印的文件名放入 7 ,然后打印
20
竞争条件(空闲区域7)
打印目录

4
abc
5
Prog.c
Process A
6
Hi.c
7
Process B
out=4 in=7
T2: … read(x) if x>=2000 then x=x-2000 write(x) …
9
3、与时间有关的错误(例子2)
get
copy
put
S缓冲区
t缓冲区
get、copy、put 三个进程 并发执行
f 缓冲区
g 缓冲区
(1)get把数据读入s,但s中数据还未被copy取走,第二 次get过来的进程将s中数据覆盖。
P进入临界区的条件:pturn^ not qturn Q进入临界区的条件:not pturn^qturn
P:
Q:
……
……
pturn=ture; while(qturn);
CPU
1
ห้องสมุดไป่ตู้临界区
进程A
A进入临界区
A出临界区
B要进入 临界区 被阻塞
B进入 临界区
进程B
t1
t2
t3
t4
时间
(1)若没有进程在临界区,想进入临界区的进程可进入
(2)不允许两个进程同时处于其临界区
(3)临界区外运行的进程不能阻塞其他进程进入临界区
(4)不得使进程无限期等待进入临界区 26
实现进程互斥的方法
软件方案 Dekker解法、Peterson解法 硬件方案 屏蔽中断、TSL(XCHG)指令
作的程序片段
24
互斥与临界区(2)
临界区调度原则:
如果已有进程在临界区,其他试图进入的进程应等待; 进入临界区内的进程应在有限时间内退出,以便让等待
进程中的一个进入。
临界区调度原则总结:
互斥使用、有空让进; 忙则等待、有限等待; 择一而入,算法可行。
25
临界区(互斥区)的使用原则
第4章 同步、通信与死锁
主要内容
并发进程 临界区管理 信号量与PV操作 管程 进程通信 死锁
1
4.1 并发进程
4.1.1 顺序程序设计 4.1.2 进程的并发性 4.1.3 进程的交互:协作和竞争
2
4.1.1 顺序程序设计
进程的顺序性
一个进程在顺序处理器上的执行是严格按序的, 一个进程只有当一个操作结束后,才能开始后继 操作。
进程A 读取到in=7,将文件名放入7,即将 修改in时
,进程A被切换下CPU,进程B上CPU。
21
竞争条件(空闲区域7)
打印目录

4
abc
5
Prog.c
Process A
6
Hi.c
7
Process B
out=4 in=7
进程B 读取到in=7,将文件名放入7,修改in=8 结果:进程A中文件未能打印,因为被进程B覆盖了。
从微观上看,任一时刻仅有一个进程在处理器上运行。
5
并行工作图示
i
p
t1
i1
t2
i2
p1
t3
i3
p2
t4 t5 时间
i4
p3
i5
P4
并行工作
o
进程
o1 o2 o3
6
并发的实质
并发的实质是一个处理器在几个进程之间的多 路复用,并发是对有限的物理资源强制行使多 用户共享,消除计算机部件之间的互等现象, 以提高系统资源利用率。
1
qturn=ture; while(pturn);
临界区
qturn=false;
……
Step1: p执行到pturn=ture,被撤下CPU
33
软件方法3 pturn,qturn的初值为false
P进入临界区的条件:pturn^ not qturn Q进入临界区的条件:not pturn^qturn
P: …… pturn=ture; CPU while(qturn); 临界区 pturn=false; ……
Q:
……
CPU
1
qturn=ture; while(pturn);
2
临界区
qturn=false;
……
Step2: Q进程上CPU执行到qturn=ture
34
软件方法3 pturn,qturn的初值为false
23
竞争互斥
由于各个进程要求使用共享资源(变量、文件) 而这些资源需要排他性使用,各进程之间竞争
使用这些资源——这一关系称为进程互斥
临界资源 系统中某些资源一次只允许一个进程使用,称
这样的资源为临界资源或互斥资源或共享变量 临界区(互斥区) 各个进程对某个临界资源(共享变量)实施操
16
3.1.3 进程的交互:竞争与协作(1) 第一种是竞争关系
进程互斥:若干个进程因相互争夺独占型资 源时所产生的竞争制约关系。
资源竞争的两个控制问题:
一个是死锁(Deadlock)问题, 一个是饥饿(Starvation) 问题 既要解决饥饿问题,又要解决死锁问题。
17
进程的交往:竞争与协作(2) 第二种是协作关系
(2)若put进程先执行,但t中数据未准备好,可能将不需 要的数据取走。
相关主题