第6章进程间的制约关系

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第6章 进程间的制约关系
青岛科技大学信息科学技术学院
第6章 进程间的制约关系
本章讲述内容: 1. 进程间的两种制约关系—互斥与同步 ; 2. 正确处理互斥与同步的方法——信号量以及在 信号量上的P、V操作 ; 3. 死锁以及解决死锁的途径 ; 4. 进程间的高级通信 。
青岛科技大学信息科学技术学院
6.2.3
用P、V操作实现同步
进程A 进程B 进程A 进程B
同步图示
Vs=0 (S的初值)
为进程A 准备信息
同步条件
需要进程 B 的信息 X:
同步点 X:P(S)
Y:
Y:V(S)
青岛科技大学信息科学技术学院
用P.V操作解决GET与COPY的同步问题
GET
1.
S1=0
COPY
1.
s2=0
从文件F取出一个记 录送至输入缓冲区R
青岛科技大学信息科学技术学院
GET和COPY间的协调一致
GET
1. 1.
COPY
从文件F取出一个记 录送至输入缓冲区R
2. 向COPY发送“可 以拷贝” 的消息
等待GET发来“可 同步点 以拷贝” 的消息
2. 将输入缓冲区R里的记录 拷贝到输出缓冲区T里
3. 同步点 等待COPY发来的 “拷贝结束”的消息
文件F
(1)
文件G 记录1
文件F
(2)
文件G 记录1
记录3 记录4 记录2 记录1 记录4
GET
1
记录3
记录1 T
R
记录n
T
记录n
R
文件F
(3)
文件G
记录1 记录1 PUT
文件F
(4)
文件G
记录1 记录1
记录4
记录3 R
记录1 T
记录4
记录3 R
COPY
记录3 T
2
记录n
3
记录n
6.1.2 竞争资源——互斥
青岛科技大学信息科学技术学院
2.对输入井文件目录的管理
为输出井设臵一张 “输出井文件目录表”,每个目录项记 录一个要打印输出的文件名以及该文件在磁盘的存放地址。 系统安排两个指针:out和in。out总是指向下一个被打印的 文件。in总是指向下一个可用的目录项位臵。 “缓输出程序”根据out的指点进行打印; 井管理写程序根据in的指点存放要求输出的文件目录信息.
2. 向COPY发送“可 V(s1) 以拷贝” 的消息
等待GET发来“可 以拷贝” 的消息
P(s1)
2. 将输入缓冲区R里的记录 拷贝到输出缓冲区T里
3. 等待COPY发来的 P(s2) “拷贝结束”消息
3. 向GET发送“拷 拷贝结束”消息
V(s2)
青岛科技大学信息科学技术学院
6.2.4


青岛科技大学信息科学技术学院
2. P操作和V操作
P(s) { s=s--; if (s< 0) { 该进程状态臵为等待状态 将该进程的PCB插入相应的等待队列末尾; } }
青岛科技大学信息科学技术学院
V(s) { s= s++; if (s<= 0) { 唤醒相应等待队列中等待的一个进程 改变其状态为就绪态 并将其插入就绪队列 } }
1.生产者-消费者问题
问题描述:若干进程通过有限的共享缓冲区交换数 据。其中,"生产者"进程不断写入,而"消费者" 进程不断读出;
生产者 消费者
青岛科技大学信息科学技术学院
生产者-消费者问题 (the producer-consumer problem )

把并发进程的同步和互斥问题一般化,可 抽象为一般模型:
青岛科技大学信息科学技术学院
3.关于信号量及其P、V操作的几点说明
S>0时,信号量值表示该类资源的可用资源数
S<=0时,表示已无此类资源可供分配,请求资源的进程 将被阻塞在相应的信号量S的等待队列中。 S的绝对值 = 该信号量上等待的进程数。 S>0时,每执行一次P操作,意味着请求分配一个单位的 该类资源给执行P操作的进程,即 S:=S-1; S<=0时,每执行一次V操作,意味着进程释放一个单位的 该类可用资源,即S:=S+1.而此时若S等待队列中有因该资 源而被封锁的进程,则把队列中的一个进程唤醒,转入就 绪队列。
进程A
“井管理写” 程 序
in=7
进程B
“井管理写” 程 序
读in的当前内容 ; 根据指点,存入打印文件名 ; in的值加1 ;
读in的当前内容 ; 根据指点,存入打印文件名 ; in的值加1 ;
in=9
in=8
对共享变量in的使用要保持“互斥”:两个 进程不能同时使用变量in。
青岛科技大学信息科学技术学院
青岛科技大学信息科学技术学院
semophore s; s=1;int Ri; Cobegin process Pi(i=1,2,…n) { 按旅客定票要求找到某次航班Hi; P(s); Ri=Hi; if Ri>=1 { Ri=Ri-1; Hi=Ri; V(s); 输出一张票; } else { V(s);输出票已售完; } Coend;
文件F 记录1 记录2
GET COPY 记录1 记录2 PUT
文件G
输入缓冲区R
输出缓冲区T
记录n
记录n
若不管GET、COPY、PUT的执行关系,可有六种执行可能: 1)COPY→PUT→GET; 2)COPY→GET→PUT; 3)PUT→COPY→GET 4)PUT→GET→COPY; 5)GET→COPY→PUT; 6)GET→PUT→COPY
青岛科技大学信息科学技术学院
6.1.3 协同工作——同步

进程间的同步:当一个进程运行到某一点时,除非合作 进程已经完成了某种操作或发来了消息,否则就必须暂 时等待那些操作的完成或信息的到来。
文件F
记录1 记录2 记录1 记录2 GET 输入缓冲区R COPY 输出缓冲区T PUT
文件G
记录n
记录n
3. 向GET发送“拷 贝结束”的消息
青岛科技大学信息科学技术学院
进程间的制约关系
临界资源:可以被进程(互斥)共享的资源。 临界区:每个进程中访问临界资源的那一部分 程序代码。 互斥(间接制约):两个或两个以上的进程不 能同时进入共享同一临界资源的临界区。


进程间竞争共享资源——独占分配到的部分或全部 共享资源。
互斥/同步样例分析
1 生产者-消费者问题 (the producer-consumer problem) 2 读者-写者问题 (the readers-writers problem) 3哲学家进餐问题 (The dinning philosophers problem)
青岛科技大学信息科学技术学院
为临界资源设臵一个互斥信号量s,其初 值为1;在每个进程中将临界区代码臵于 P(s)和V(s)原语之间。 必须成对使用P和V原语:

Βιβλιοθήκη Baidu
遗漏P原语则不能保证互斥访问 遗漏V原语则不能在使用临界资源之后将其释 放(给其他等待的进程) P、V原语不能次序错误、重复或遗漏

青岛科技大学信息科学技术学院
输入井文件目录表
“井管理写” 程 序
out
4 4 5 in 7 6 7 test . c group . p robit . txt
读in的当前内容 ; 根据指点,存入打印文件名 ; in的值加1 ;
实例:
进程A
“井管理写” 程 序
in=7
进程B
“井管理写” 程 序
读in的当前内容 ; 根据指点,存入打印文件名 ; in的值加1 ;
青岛科技大学信息科学技术学院
3.临界区
“临界区(或临界段)”:进程程序中“真正 需要保证互斥执行”的那一段程序。 只有涉及到共享变量的那一部分程序,才真正 需要保证互斥地执行。 进程的互斥:两个或两个以上的进程不能同时 进入共享同一临界资源的临界区。 4.解决临界区互斥必须遵循的准则 空闲则入 忙则等待(互斥) 有限等待
例1 两个进程互斥访问公用变量count

semophore s; int count; count=0; s=1; Cobegin process p1 Cobegin process p2 { { p(s); p(s); R1=count; R2=count; R1=R1-1; R2=R2-1; count=R1; count=R2; v(s); v(s); } } Coend. Coend.
青岛科技大学信息科学技术学院
6.2.2
用P、V操作实现互斥
进程B
P、V操作图示
进程B 进程A 进入点: 进入点:
P(S)
进程A
Vs=1 (S初值) P(S)
进程B CSb 进程A CSa 的临界区 的临界区
进程A CSa 的临界区
进程B CSb 的临界区
退出点:
退出点:
V(S)
V(S)
青岛科技大学信息科学技术学院
教学目的与要求
理解进程间的两种制约关系—互斥与同 步 理解临界资源和临界区的概念 理解并掌握记录型信号量机制及如何用 于解决经典进程同步问题; 理解并掌握死锁的预防、避免和检测算 法 了解进程通信的类型,理解并掌握消息 传递通信机制。

青岛科技大学信息科学技术学院
重点和难点
重点: 进程的同步和互斥 用信号量机制解决进程同步、互斥问题 进程间的通信机制 产生死锁的必要条件 用于死锁避免的银行家算法 难点: 进程的同步和互斥 用信号量机制解决进程同步、互斥问题 进程间的通信机制
6.1.2
竞争资源——互斥
1.“共享变量”或“临界资源”:可以被进程共 享的资源。(如文件、队列、缓冲区、表格、变 量等) “互斥” (进程间的制约关系):与一个共享 变量(或临界资源)交往的多个进程,为了保证 它们各自运行结果的正确性,当其中的一个进程 正在对该变量(或临界资源)进行操作时,不允 许其他进程同时对它进行操作。
青岛科技大学信息科学技术学院
6.1 进程间的制约关系
6.1.1与时间有关的错误
竞争资源——互斥 6.1.3 协同工作——同步
6.1.2
青岛科技大学信息科学技术学院
6.1 进程间的制约关系
6.1.1与时间有关的错误
1.与时间有关的错误 一个进程对其他进程的影响无法预测:进程的 并发,使一个进程何时占有处理机、占有多长时 间、执行速度的快慢、以及外界对进程产生作用 等都带有随机性。 在操作系统里,把这种由于时间因素的影响而 产生的错误,称为“与时间有关的错误”。
青岛科技大学信息科学技术学院
主要外语词汇
Synchronization(同步) Critical section(临界区) Critical resource Semaphore(信号量) Deadlock

青岛科技大学信息科学技术学院
第6章 进程间的制约关系
6.1 进程间的制约关系 6.2 信号量与P、V操作 6.3 死锁 6.4 高级进程通信
读in的当前内容 ; 根据指点,存入打印文件名 ; in的值加1 ;
in=9
in=8
青岛科技大学信息科学技术学院
3.通过双缓冲区复制文件
编写一个复制n个记录的程序,把文件F中的每个记录依次读 到输入缓冲区R,再从R拷贝到输出缓冲区T,最后写到文件G 中。假定R和T正好存放一个记录。 GET:从文件F按照顺序读出一个记录,送入输入缓冲区R; COPY:把输入缓冲区R里的记录拷贝到输出缓冲区T里; PUT:从输出缓冲区T里读出一个记录,依照顺序写入文件G。
青岛科技大学信息科学技术学院
例2 飞机订票

一民航航班售票系统由n个售票处,每个 售票处通过终端访问系统中的公用数据 区,假定公共数据区中一些单元Hk (k=1,2,3……)分别存放各次航班的现 存票数,设P1,P2,…,Pn表示各售票处的 处理进程,R1,R2,…Rn表示各进程执行 时所用的工作单元,用信号量实现进程 互斥。

同步(直接制约):又称协作关系,指某些进 程为完成同一任务需要分工协作等待来自其他 进程的信息。
青岛科技大学信息科学技术学院
6.2 信号量与P、V操作
6.2.1
信号量与P、V操作的定义
1.信号量的定义 “信号量”:是一个具有非负初值的整型变量, 并有一个队列与它关联。 定义一个信号量S时,要给出它的初值Vs,给出 与它相关的队列指针Vq。 在一个信号量S上,只能做规定的两种操作:P 操作,记为P(S);和V操作,记为V(S)。
生产者——消费者问题
资源的消费者:系统中使用某一类资源的 进程 资源的生产者:系统中释放同一类资源的 进程

青岛科技大学信息科学技术学院
生产者-消费者问题描述

生产者进程与消费者进程之 间设臵一个具有n个缓冲区的 缓冲池;
in

它们之间必须保持同步:

不允许消费者进程到一个 空缓冲区去取产品; 不允许生产者进程向一个 已装满产品且尚未被取走 的缓冲区中投放产品。
相关文档
最新文档