CH3讲义
本章知识点:
进程的顺序性和并发性
分析与时间有关的错误。(★)
进程同步与互斥的概念。
临界区及其调度。(★)
记录型信号量与PV操作。(★★★)
条件变量和管程。(★★)
进程通信种类
消息传递的两种方式及其原语。(★)
本章思考题:
叙述顺序程序设计的特点以及采用顺序程序设计的优缺点。
程序并发执行为什么会失去封闭性和结果可再现性?
叙述并发程序设计的特点以及采用并发程序设计的优缺点。
解释并发进程的无关性和交往性。
并发进程的执行可能产生与时间有关的错误,试各举一例来说明与时间有关错误的两种表现形式。
解释进程的竞争关系和协作关系。
试说明进程的互斥和同步两个概念之间的区别。
什么是临界区和临界资源?对临界区管理的基本原则是什么?
哪些硬件设施可以实现临界区管理?
什么是信号量?如何对它进行分类。
为什么PV操作均为不可分割的原语操作?
从信号量和PV操作的定义,可以获得哪些推论?
叙述AND型信号量机制的特点
叙述一般信量机制的特点
有三个并发进程:R负责从输入设备读入信息,M负责对信号加工处理;P负责打印输出。今提供;
一个缓冲区,可放置K个信息;
二个缓冲区,每个可放置K个信息;
试用PV操作写出三个进程正确工作的流程
没有n个进程共享一个互斥段,如果:
每次只允许一个进程进入互斥段;
每次最多允许m个进程(m≤n)同时进入互斥段。
试问:所采用的互斥信号量初值是否相同?信号量值的变化范围如何?
三个进程并发活动,其算法描述如下,试分析是否有错,如有则指出原因并改正。
Begin
S:=-1;
Cobegin
P1:Begin
……
V(S);
End
P2:Begin
……
V(S)
End;
P3:Begin
P(S)
……
End
Cobegin
End
何谓管程?它有哪些属性?管程中的过程在执行中能被中断吗?为什么?
试比较Hanson和Hoare两种管程实现方法。
已经有PV操作可用作同步工具,为什么还要有消息传递机制。
叙述信件,信箱和间接通信原语。
简述消息缓冲通信机制的实现思想。
什么是管道(pipeline)?如何通过管道机制实现进程间通信?
有一阅览室,读者进入时必须先在一张登记表上登记,该表为每一座位列出一个表目,包括座号、姓名读者离开时要批销登记信息;假如阅览室共有100个座位。试用:1)信号量和P.V标作;2)管程;来实现用户进程的同步算法
在一个盒子里,混装了数量相等的黑白围棋子。现在用自动分拣系统把黑子、白子分开,设分拣系统有二个进程P1和P2,其中P1拣白子;P2拣黑子。规定每个进程每次拣一子;当一个进程在拣时,不允许另一个进程去拣;当一个进程拣了一子时,必须让另一个进程去拣。试写出两进程P1和P2能并发正确执行的程序。
管程的同步机制使用条件变量和Wait及Signal,尝试为管程设计一种仅仅使用一个操作的同步机制。
一个快餐厅有4种职员:(1)领班:接受顾客点菜;(2)厨师:准备顾客的饭菜;(3)打包工:将做好的饭菜打包;(4)出纳员-收款并提交食品。每个职员可被看作一个进程,试写出能让四类职员正确并发运行的程序。
在信号量S上作P.V操作时,S的值发生变化,当S>0、S=0、S〈 0时,它们的物理意义是什么?
二个并发进程并发执行,其中,A、B、C、D、E是原语,试给出可能的并发执行路径。
Process P Process Q
begin begin
A; C;
B; D;
C; end;
end;
是否在任何情况下,‘忙式等待’都比‘阻塞等待’方法的效率低?试解释之。
证明信号量与管程的功能是等价的:
(1)用信号量实现管程;
(2)用管程实现信号量。
面包房(Bakery Algorithm)算法,解决互斥问题的另一个算法:
Var choosing:array [0…n-1] of boolean;
number:array [0…n-1] of integer;
Repeat
Choosing [i]:=True;
Number[i]:=1+max ( number [0],…nuber [n-1] );
Choosing[i]:=false;
for j:=0 to n-1 do
begin
while choosing [j] do {nothing};
while number[j]≠0 ∧(number [j], j)<(number[i],i)