09 2009 操作系统第9讲:第3章进程管理(续3 互斥与同步)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
●如果一个进程在执行期间,访问公用资源,若允许发生 中断,则有可能导致前后计算出现不一致,为防止问题 出现,需满足如下条件:
1. 空则让进,只允进1——指临界区空闲,允许一个进程进入。 2. 内可阻外,外不相扰——临界区只允许一个进程访问公用资源, 临界区之外的其它进程互相之间不发生阻挠。 3. 限时等待——在限定时间内,必须进入临界区,以防止死锁发 生。死锁是 指各并发进程彼此相互等待对方所拥有的资源,且 在得到对方资源之前,不会释放自己所拥有资源之现象。 4. 让权等待——当进程不能进入临界区时,应即通知CPU,以免 陷入盲等。
2013-8-2 15
3.5 进程互斥与同步
八、互斥的负面影响,解决的途径与方法
目的在于避免因进程并发可能导致结果不可再现 1.软件的方法
●公用变量整型法 ●数组法 ●变量与数组混合算法 软件的方法从理论上行的通,在方法上也有解决的途径,但 却难以实现,因为要保证下一个并发进程的连续性,不被别 的进程中断,需要对执行的下一步进行判断,从而导致计算 机系统的整体性能下降,因而软件的方法是不可取的。
2.定义:在程序设计中,一种用来对共享系统资源进行控制的信 号,即一种标志变量,信标向潜在的用户(进程)指明,某个 文件或资源正在使用中,以防止除此之外的其它用户来访问它。 引入信号量的目的,是为了服务于PV原语。 (744页中的英
汉双解词典解释)
3.说明: 与互斥相关的信号量叫公用信号量,与多个进程有关。 与同步相关的信号量叫私有信号量,与2个进程有关 。
2.一种可能的办法是对临界区加锁以实现互斥。当某个进程进 入临界区之后,它将锁上临界区,直到它退出临界区时为止。 并发进程在申请进入临界区时,首先测试该临界区是否是上 锁的。如果该临界区已被锁住,则该进程要等到该临界区开 锁之后才有可能获得临界区。
2013-8-2
23
3.5 进程互斥与同步
十一、互斥的加锁实现
201281816八互斥的负面影响解决的途径与方法目的在于避免因进程并发可能导致结果不可再现1软件的方法公用变量整型法数组法变量与数组混合算法软件的方法从理论上行的通在方法上也有解决的途径但却难以实现因为要保证下一个并发进程的连续性不被别的进程中断需要对执行的下一步进行判断从而导致计算机系统的整体性能下降因而软件的方法是不可取的
操作系统第9讲
第3章 进程管理(3)
(进程互斥与同步)
主讲:闫新庆
2012 – 03
2013-8-2 1
第3章
进程管理
内容提纲
3.1 认识进程前的准备 3.3 3.5 3.7 进程状态及其转换 进程互斥与同步 死锁问题 ●本章小结 ●习题 3.2 进程的概念与描述 3.4 进程控制 3.6 进程通信 3.8 线程与超级线程
2013-8-2 12
3.5 进程互斥与同步
5.V(sem)原语操作(加法操作)
● 进 程 退 出 临 界 区 必 须 进 行 的 操 作 , 即 Sem= Sem+1操作。
●若Sem =0,则从阻塞队列中唤醒一进程,返回到 原进程中断处继续执行或转入进程调度。
● 若无后续进程继续进行,系统则令Sem =1
2013-8-2 22
3.5 进程互斥与同步
十一、互斥的加锁实现
1. 实现并发进程的互斥。只需把临界区中的各个过程按不同的 时间排列调用就可以实现并发进程的互斥。但事实上这是不 可能的。因为这要求该组并发进程中的每个进程事先知道其 他并发进程与系统的动作,由用户程序执行开始的随机性可 知,这是不可能的。
界区。另一个进程也要进入临界区,也必需先进行P操作,若 Sem=-1 说明已有一个进程进入临界区,另一个进程则进入在 等待状态。
2013-8-2
10
3.5 进程互斥与同步
4.P(sem)原语操作(减法操作)
●进程进入临界区首先必须进行的操作,即减1操作。 ●设 Sem初值为1 ●Sem= Sem-1, Sem的结果只可能是0,或-1 ●若 ≥0,则进程调入进占临界区,访问共享资源。第一次 进程进行P操作 之后, Sem= 0,说明临界区未占用,则该进程可以进占临界区。 ●第2个进程欲进入,也要先进行P操作,Sem =-1 ,则说明临界区已占
2013-8-2
18
3.5 进程互斥与同步
九、实现进程互斥的PV原语操作(2) 6. V操作步骤
(1)任一进程完成P操作,独占某一共享资源,使用完毕后,
必须立即退出,退出时必须进行V操作,即Sem+1操作。
Sem = Sem+1 = 0
(2)若Sem=0,则进程调度从就绪队列选一进程进占CPU。 (3)V操作完成之后,不会出现Sem<0的情况???
2.原语类别:(semaphor)简称sem
● 指 令 级 原 语 —— 该 程 序 段 ( 或 扩 充 了 的 指 令 ) 在 其 执 行 期 间不允许中断,是一个不可再分的指令单位。 ●功能级原语——该程序段在执行期间不允许并发执行。
2013-8-2 7
3.5 进程互斥与同步
四、信号量
1. 是用于控制进程执行过程的信号式标志型变量。
2.硬件的方法
为全局和每个硬件设置一个布尔变量(即逻辑值的真假)
2013-8-2
16
3.5 进程互斥与同步
九、实现进程互斥的PV原语操作
1. 解决方案,使用PV原语加信号量的方法
2. 任一进程要获取某一共享资源,必须通过临界区来判定是否具有 获取独占共享资源的资格。 3. 任一进程在申请某一共享资源时,必须首先进行P操作。 4. Sem初值为1。 5. P操作步骤: 设P为某一组进程P1、 P2、 P3、 P4 ,申请某一共享资源,依序 进行P1操作:
2013-8-2
19
3.5 进程互斥与同步
十、实现进程同步的PV 原语操作(1) ●面向2个进程,即乒乓问题)
1.条件(以计算进程PA和输出进程PB为例) (1) PA 必须向缓冲区发送一个数据,PB 才能从中取
出一个数据,取须有之,无则不取。
(2) 空则可发,满则停止。 (3) FIFO算法。(先进先出算法)
2013-8-2 4
3.5 进程互斥与同步
二、认识进程互斥与同步相关的重要概念与术语(3)
4. 直接制约(与同步相关的概念)
●该概念的讨论是面向同步而言,是面向2个进程而言,是面向 2
个进程因资源竞争而对其速度影响问题。
●定义:2个在异步环境下的并发进程,各自执行的结果互为对方
继续执行的条件,因而引起的对其执行速度限制(影响)的过程, 称之为直接制约。
3.设临界区的类名为S。为了保证每一次临界区中只能有一个程 序段被执行,又设锁定位 key[S] 。key[S]表示该锁定 位属于类名为S的临界区。加锁后的临界区程序描述如下:
lock(key [S]) 〈临 界 区〉 unlock(key [S]) 设key[S]=1时表示类名为S的临界区可用,key [S]=0时表 示类名为S的临界区不可用。则,unlock(key [S])只用一条 语句即可实现。即:key [S]←1 不过,由于lock(key [S])必须满足key[S]=0
注释1:是对两个进程而言,即1对1问题。 注释2:目的是禁止因直接制约而引发的死锁现象。
2013-8-2
5
3.5 进程互斥与同步
二、认识进程互斥与同步相关的重要概念与术语(4)
5.进程同步定义:
2个并发进程,因直接制约,互相发送消息,而进行的相互合作、 相互等待,使其按照一定的速度执行的过程叫做进程的同步。
2013-8-2
8
3.5 进程互斥与同步
五、P.V原语
1.是1965年荷兰学者Dijkstra(迪科斯塔)根据火车信号原理,提出
来用于解决进程互斥和同步存在问题的模型。 P(荷文 Passeren,
英 文 Pass 简 称 P 原 语 ) 调 度 ; V ( 荷 文 Venhoog , 英 文 incremane 简 称 V 原 语 ) 增 量 。 Tannibaum 提 出 相 对 应 的 Down(sleep) P 和 Up(wekeup) V。 2.P.V原语是基于对信号量的操作,是两个不可中断的指令级原语 操作,是用于解决进程的同步与互斥问题。
2013-8-2
17
3.5 进程互斥与同步
5. P操作步骤(续)
(1) Sem =Sem-1=0 (2)P1进占临界区,即进占申请的某一共享资源,在P1未退出占有 的资源时,依序进行P2、 P3、 P4操作,依次对Sem进行减一操 作,则Sem<0,P 2、 P3、 P4被阻塞。 ●请问1:的値会否出现-1,-2,-3,-4的问题? ●请问2:P操作如何设计,才能避免交叉使用同一资源而引起 结果不可再现性。 ●请问3:此时强行置 Sem =-1,结果如何?
虽然通过每一步操作可以解决问题,但会浪费大量的
CPU 资 源 , 因 此 而 引 起 系 统 效 率 的 大 幅 度 降 低。????????
2013-8-2
21
223.5 进程互斥与同步
十、实现进程同步的PV 原语操作(3)
(3)解决步骤 ① 设置私用信号量Sem,并为其赋初值 ② 用同步原语(发送和接收)+信号量(私用)解决问题 (4)例 : PA(计算进程) PB(打印进程) ●计算进程为Sem(A)=n,n 表示有n个缓冲区 ●打印进程为Sem(B)=0,表示无数据可取 ●PA向缓冲区发送一个数据,则Sem(A)= Sem(A)-1, Sem(A)=0, 缓冲区满。 ● PA同步原语向PB发送一个消息 ● Sem(B)进行n次V操作,当Sem=n,说明缓冲区空,向PA发送消 息, PA可继续向缓冲区发送数据,直到发送与接收完毕。
有无Sem=Sem+1=-1,-2,-3,-4,-5 之可能????
2013-8-2
13
3.5 进程互斥与同步
入口 sem=sem+1 s≤0 否

返回
从阻塞队列中唤醒等待队列中的一个进程 返回或转进程调度
图 3.12 V原语操作流程
2013-8-2
14
3.5 进程互斥与同步
七、互斥实现的条件(篮球竞争问题)
2013-8-2
20
3.5 进程互斥与同步
十、实现进程同步的PV 原语操作(2)
2.用PV原语实现进程同步
⑴ 同步是解决两个进程(PA、PB)因共享同一资源因直接 制约产生的死锁问题,所谓同步,是两个进程各自执行 的结果互为对方执行条件。 ⑵ 同步所讨论的是进程1对1问题,使用的信号量称为私用 信号量。
6.异步环境:
在同一段时间内,一组并发进程,各自以不可预知的速度独立地
向前推进,称为进程的异步性或异步环境。(起始时间的随机性 )
2013-8-2
6
3.5 进程互斥与同步
三、原语及其类型 1.原语定义:
●在系统态下,执行某些具有特定功能的程序段称之为原语。 (调用核心层子程序的指令) ●微软1999年第3版(239页)之计算机词典解释:在OS中,调用核 心层子程序的指令,它好像是一条扩充了的机器指令。
◆临界区是由属于不同并发进程的程序段共享公用数据或公用 数据变量而引起的,临界区不可能用增加硬件的方法来解决。因 此,临界区被称为访问公用数据的那段程序。
2013-8-2
3
3.5 进程互斥与同步
二、认识进程Biblioteka 斥与同步相关的重要概念与术语(2)
2.间接制约 ◆该概念的讨论,是面向互斥而言,面向共享资源(如公用数据和变
用,则该进程不能进占临界区,而后转入阻塞队列。
第3个...….第n个欲进入的进程操作,也要先进行P操作..!!
2013-8-2
11
3.5 进程互斥与同步
入口
Sem= Sem-1 Sem= 0
Y 转进程调度,该进程进入临 界区,进占相应资源
N
将该进程阻塞
返回到进程 的下一步
转进程调度执 行其它进程
图3.11 P原语操作流程
2013-8-2
2
3.5 进程互斥与同步
一、研究进程互斥与同步目的
分析一组并发进程在执行过程中,因资源竞争,资源共享引起的对其 执行速度的影响,并找出消除其负面影响的条件与方法。
二、认识进程互斥与同步相关的重要概念与术语
1. 临界区
●引入背景:为保证并发进程执行结果的正确性。 ●定义:不允许多个并发进程交叉执行的一段程序称为临界区。
量),是面向一组并发进程(2个以上)而言,面向其因资源竞争而 对其速度影响问题。
◆定义:指一组并发进程因资源共享(如公用数据及变量)对其执行
速度的影响(制约)的过程。
3. 进程互斥的定义: ◆一组并发进程因间接制约互相合作,互相等待的过程,称为进程的
互斥。 注释1:是多个进程和一个进程之间的关系,即1对多的关系。 注释2:目的是禁止两个以上共享同一资源的并发进程同时进入临界区。 PA(慢)是因为PB占用了PA的资源而不得不等待,所以进程PA的慢是因为 PB的间接制约而引起的
2013-8-2
9
3.5 进程互斥与同步
3.用PV原语实现两个进程PA与PB的描述
① 设Sem的初值为1,取值范围为(0,1,-1) ② 设Sem=1 初值 临界区为空,PA、PB都未进入
Sem=0 ,允许PA 、 PB有一个进入临界区
◆当一个进程执行P原语减1操作,Sem=0,表示该进程可以进入临
相关文档
最新文档