当前位置:
文档之家› 操作系统概论-第6章_并发管理
操作系统概论-第6章_并发管理
例:P111
临界区
例:P113
临界区
3.互斥
定义: 在操作系统中,当某一进程正在访问某临界区时, 就不允许其它进程进入,否则就会发生(后果)无法 估计的错误。我们把进程之间的这种相互制约的关 系称为互斥
• 进入临界区的准则: • (1)每次至多有一个进程处于临界区; • (2) 当有若干个进程欲进入临界区时,应在有 限的时间内使其进入; • (3)进程在临界区内仅逗留有限的时间
信号量mutex的取值范围:-2、-1、0、1
1、由 V 操 作唤醒的进程是否一定能够直接进入运行状态 ?
举例说明之 答:否。一般来说,唤醒是将进程状态由等待状态变成就 绪状态,而就绪进程何时获得处理机则是由系统的处理机 调度策略确定的。如果采用抢占式优先级调度算法,并且 被唤醒的进程是当前系统中优先级最高的进程,那么该进 程将被调度执行,该进程的状态变成运行态。如果该进程 不是系统中优先级最高的进程或系统采用其它调度算法, 那么该进程不会被调度执行,其状态将维持在就绪态
程被置成等待信号量s的状态 */
end; procedure V(var s:semaphore); begin s := s + 1; /* 把信号量加1 */ if s <= 0 then R(s); /* 若信号量小于等于0,则释放
一个等待信号量s的进程 */
end;
p、v操作
(1) p操作 对信号量s的 p操作记为 p(s)。p(s)是一个不可分割的原语 操作,即取信号灯值减1,若相减结果为负,则调用p(s)的进程 被阻,并插入到该信号量的等待队列中,否则可以继续执行
2.若用PV操作管理某一组相关临界区,其信号量S 的值在[-1,1] 之间变化,当S=-1,S=0,S =1时它们各自的物理含义是什么? S=-1表示已有一个进程在相关临界区执行,且 有一个进程正在等待进入相关临界区 S=0表示有一个进程正在相关临界区执行,但无 进程等待进入相关临界区 S=1表示无进程在相关临界区执行,也无进程等 待进入相关临界区,若有进程欲进入相关临界区 则可立即进入
操作系统概论
6.1 6.2 6.3 6.4 6.5 6.6
进程的并发性 与时间有关的错误 临界区与PV操作 进程的互斥与同步 进程通信 死锁
重点:分析与时间有关的错误;用 PV 操作 实现进程的互斥与同步;解决死锁问题的 方法
6.1
程序的顺序执行与并发执行
一. 程序的顺序执行与特征
1. 什么是程序的顺序执行 一个程序由若干个程序段组成,而这些程序段的执 行必须是顺序的,这种程序执行的方式就称为程序的顺 序执行。 例如:
6.2 与时间有关的错误
1. 什么是与时间有关的错误 执行结果与并发程序执行的相对速度相关 2. 为什么会发生与时间有关的错误 当两个或多个程序有共同的临界资源时,由于程 序执行的速度不同,则会发生与时间有关的错误
例:P111
例:P113
并发程序的特征
1. 失去程序的封闭性和可再现性 如果程序执行的结果是一个与时间无关的函数,即具有 封闭性。 若一个程序的执行可改变另一个程序的变量,程序执行 的结果不仅依赖于程序的初始条件,还依赖于程序执行时的 相对速度,在这种情况下就失去了程序的封闭性。 在并发环境中,机内资源状态将由多个程序来改变,因 此使程序的运行失去了封闭性。
(2)v操作 对信号量s的 v操作记为 v(s)。v(s)是一个不可分割的原语 操作,即取信号量值加1,若相加结果大于零,进程继续执行, 否则,要帮助唤醒在信号量等待队列上的一个进程
6.4.1 进程的互斥 6.4.2 进程的同步
6.4 进程的互斥与同步 设:mutex为互斥信号灯,初值为1
main ( ) { int mutex=1; cobegin pa( ); pb( ); pc( ); coend } } { : p(mutex); CSa; v(mutex); : } pa ( ) { : p(mutex); CSb; v(mutex); : } pb ( ) { : p(mutex); CSc; v(mutex); : pc ( )
二. 程序的并发执行
1. 什么是程序的并发执行 若干个程序段同时在系统中运行,这些程序段 的执行在时间上是重叠的,一个程序段的执行尚未 结束,另一个程序段的执行已经开始,即使这种重 叠是很小的一部分,也称这几个程序段是并发执行 的。 例:三个并发执行的程序段。
P Q R
用下图说明在多道批处理系统中,大量操作执 行的先后次序。 讨论:
type semaphore = record value:integer; queue: list of process; End procedure P(var s:semaphore); begin s := s – 1; /* 把信号量减去1 */ if s < 0 then W(s);/* 若信号量小于0,则调用P(s)的进
•
某些进程为完成同一任务需要 分工协作 进程的同步是解决进程间协作 关系(直接制约关系)的手段
•
•
进程同步指两个以上进程基于某个 条件来协调它们的活动。一个进程 的执行依赖于协作进程的消息或信 号,当一个进程没有得到来自于协 作进程的消息或信号时需等待,直 到消息或信号到达才被唤醒
进程互斥关系是一种特殊的进程 同步关系,即逐次使用互斥共享 资源,是对进程使用资源次序上 的一种协调
2. 顺序程序的特征
(1)顺序性:处理机的操作严格按照程序规定的顺 序执行,即只有前一操作结束后,才能启动后一操 作的执行
(2)封闭性:程序在封闭的环境下运行,并独占全 机,因此机内的资源的状态只有运行的程序操作才 能改变它,其执行结果不受外界因素的影响 (3)可再现性:只要程序执行时的环境和初始条件 相同,程序经多次运行后所得的结果必然相同
在并发环境下
CPU利用率=89% DEV1并发环境下利用=33% DEV2并发环境下利用=66%
在单CPU系统中,系统调度在某一时刻只能让一 个线程(进程)运行,虽然这种调度机制有多种形 式(大多数是时间片轮巡为主),但无论如何,要 通过不断切换需要运行的线程让其运行的方式就 叫并发(concurrent)。 而在多CPU系统中,可以让两个以上的线程(进 程)同时运行,这种可以同时让两个以上线程同时 运行的方式叫做并行(parallel) 多道程序设计和并发的关系
进程的相互制约关系 并发进程分类:无关的,交互的
无关的并发进程:一组并发进程分 别在不同的变量集合上操作,一个 进程的执行与其他并发进程的进展 无关
并发进程的无关性是进程的执 行与时间无关的一个充分条件
交互的并发进程:一组并发进程共享 某些变量,或者一组进程相互合作;一 个进程的执行可能影响其他并发进程 的结果 与时间有关的错误 执行的相对速度无法相互控制 表现形式: 结果不唯一 例:P111,P113 永远等待 例:死锁
6.3.1 临界区 6.3.2 PV操作
6.3
引例: 宿舍电话的使用 打印机的使用
临界区和PV操作
1. 临界资源:一次仅允许一个进程使用的资源称为临 界资源 引例中的电话和打印机都属于临界资源。除此之外 ,还有内存变量、指针、数组等等也是临界资源
2、临界区: 每个进程中访问临界资 源的那段程序段称为临 界区(临界段)
2.程序与计算不再一一对应 一个程序的一次执行称为一个计算 在并发的环境下,一个程序可对应多个计算。
在程序顺序执行时,一个程序总是对应一个具体 的计算,但在程序的并发执行时,可能有多用户共享 使用同一个程序,但处理(计算)的对象却是不同的, 例如,在多用户环境下,可能同时有多个用户调用C语 言的编译程序,这就是典型的一个程序对应多个用户 源程序的情况。
I1
C I2
1
(1) 哪些程序段的执 行必须是顺序的?为 什么?
P1
I3
C
2
(2) 哪些程序段的执 行是并行的?为什么?
I4
C
3
P2
2. 表示方法
s0; cobegin s1; s2; …… sn; coend sn+1;
s 0
s 1
s 2
……
s n
Sn+1
在顺序环境下:先A,后B
CPU利用率= 40/80 = 50% DEV1利用率=18.75% DEV2利用率= 31.25%
信号量的物理含义:
S>0表示有S个资源可用; S=0表示无资源可用; S<0则| S |表示S等待队列中的进程个数。
二. 用信号量实现进程的同步
1. 合作进程的执行次序 例1:
main ( ) { pa ( ) { int S=0; : pb ( ) { p(S);
s
Pa
cobegin
:
v(S); } }
:
:
Pb
f }
pa( ); pb( ); coend
例2:
s
Pa
Pb
f
Pc
main ( ) { {
pa ( ) {
pc ( )
int Sac=0;
int Sbc=0; cobegin pa( ); pb( ); : :
:
: : :
:
:
p(Sac);
p(Sbc); : : :
v(Sac);
v(Sbc);
pc( );
coend }
}
}
}
2. 共享缓冲区的合作进程的同步 例1:
cp
iop
缓冲区buf
例 : 生 产 者 与 消 费 者 问 题
3.程序并发执行的相互制约 在多道程序设计的环境下,程序是并发执行的。 即系统中有多道程序在“同时”执行,这些程序之间 要共享系统的资源,程序之间有合作(通信)的关系。 合作与竞争产生一系列的矛盾,这些矛盾实际上是一 种相互制约,有直接的,也有间接。 (1)资源共享 (2)进程合作 (间接制约关系) (直接制约关系)