CH3讲义讲解文档格式.docx
- 文档编号:15856145
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:33
- 大小:109.06KB
CH3讲义讲解文档格式.docx
《CH3讲义讲解文档格式.docx》由会员分享,可在线阅读,更多相关《CH3讲义讲解文档格式.docx(33页珍藏版)》请在冰豆网上搜索。
对临界区管理的基本原则是什么?
9.哪些硬件设施可以实现临界区管理?
10.什么是信号量?
如何对它进行分类。
11.为什么PV操作均为不可分割的原语操作?
12.从信号量和PV操作的定义,可以获得哪些推论?
13.叙述AND型信号量机制的特点
14.叙述一般信量机制的特点
15.有三个并发进程:
R负责从输入设备读入信息,M负责对信号加工处理;
P负责打印输出。
今提供;
1)一个缓冲区,可放置K个信息;
2)二个缓冲区,每个可放置K个信息;
3)试用PV操作写出三个进程正确工作的流程
16.没有n个进程共享一个互斥段,如果:
1)每次只允许一个进程进入互斥段;
2)每次最多允许m个进程(m≤n)同时进入互斥段。
试问:
所采用的互斥信号量初值是否相同?
信号量值的变化范围如何?
17.三个进程并发活动,其算法描述如下,试分析是否有错,如有则指出原因并改正。
Begin
S:
=-1;
Cobegin
P1:
……
V(S);
End
P2:
V(S)
End;
P3:
P(S)
End
18.何谓管程?
它有哪些属性?
管程中的过程在执行中能被中断吗?
为什么?
19.试比较Hanson和Hoare两种管程实现方法。
20.已经有PV操作可用作同步工具,为什么还要有消息传递机制。
21.叙述信件,信箱和间接通信原语。
22.简述消息缓冲通信机制的实现思想。
23.什么是管道(pipeline)?
如何通过管道机制实现进程间通信?
24.有一阅览室,读者进入时必须先在一张登记表上登记,该表为每一座位列出一个表目,包括座号、姓名读者离开时要批销登记信息;
假如阅览室共有100个座位。
试用:
1)信号量和P.V标作;
2)管程;
来实现用户进程的同步算法
25.在一个盒子里,混装了数量相等的黑白围棋子。
现在用自动分拣系统把黑子、白子分开,设分拣系统有二个进程P1和P2,其中P1拣白子;
P2拣黑子。
规定每个进程每次拣一子;
当一个进程在拣时,不允许另一个进程去拣;
当一个进程拣了一子时,必须让另一个进程去拣。
试写出两进程P1和P2能并发正确执行的程序。
26.管程的同步机制使用条件变量和Wait及Signal,尝试为管程设计一种仅仅使用一个操作的同步机制。
27.一个快餐厅有4种职员:
(1)领班:
接受顾客点菜;
(2)厨师:
准备顾客的饭菜;
(3)打包工:
将做好的饭菜打包;
(4)出纳员-收款并提交食品。
每个职员可被看作一个进程,试写出能让四类职员正确并发运行的程序。
28.在信号量S上作P.V操作时,S的值发生变化,当S>0、S=0、S〈0时,它们的物理意义是什么?
29.二个并发进程并发执行,其中,A、B、C、D、E是原语,试给出可能的并发执行路径。
ProcessPProcessQ
beginbegin
A;
C;
B;
D;
C;
end;
end;
是否在任何情况下,‘忙式等待’都比‘阻塞等待’方法的效率低?
试解释之。
30.证明信号量与管程的功能是等价的:
(1)用信号量实现管程;
(2)用管程实现信号量。
31.面包房(BakeryAlgorithm)算法,解决互斥问题的另一个算法:
Varchoosing:
array[0…n-1]ofboolean;
number:
array[0…n-1]ofinteger;
Repeat
Choosing[i]:
=True;
Number[i]:
=1+max(number[0],…nuber[n-1]);
Choosing[i]:
=false;
forj:
=0ton-1do
begin
whilechoosing[j]do{nothing};
whilenumber[j]≠0∧(number[j],j)<(number[i],i)
do{nothing};
{criticalsection};
number[i]:
=0;
{remaider};
forever
其中,choosing和Number的初值分别为false和0,每个数值中的第三个元素只能由进程I进行读和写,而其它进程只能读。
(a,b)<(c,d)的定义为:
(a<c)or(a=c∧b<d)试回答:
(1)用自然语言描述该算法
(2)该算法能否实现互斥,为什么?
CH3进程同步与通信
3.1进程的同步与互斥
3.1.1临界区与临界资源
临界区的概念是由Dijkstra在1965年首先提出的。
一次仅允许一个进程使用的资源称为临界资源。
许多物理设备都属于临界资源,如打印机,绘图机;
另外,还有许多变量和数据可以被多个进程共享,也属于临界资源。
访问临界资源的代码成为临界区。
为了保证正确使用资源,可以把对临界资源的访问分为四部分:
进入区、临界区、退出区和剩余区。
对若干个进程共享一个变量的相关的临界区,有三个调度原则:
●
一次至多一个进程能够在它的临界区内;
●不能让一个进程无限地留在它的临界区内;
●不能强迫一个进程无限地等待进入它的临界区。
特别,进入临界区的任一进程不能妨碍正等待进入的其它进程的进展;
我们可把临界区的调度原则总结成四句话:
空闲让进、忙则等待、有限等待、让权等待。
临界区是允许嵌套的,例如
regionxdobegin…regionydo…end
但是粗心的嵌套可能导致进程无限地留在它的临界区内,例如,如果又有一个进程执行:
regionydobegin…regionxdo…end
这样,当两个进程在大约差不多的时间进入了外层的临界区后,将发现它们每个都被排斥在内层临界区之外,造成无限地等待进入临界区。
3.1.2同步与互斥的概念
在多道程序设计系统中,同一时刻可能有许多进程,这些进程之间存在两种基本关系:
竞争关系和协作关系。
第一种是竞争关系,系统中的多个进程之间彼此无关,它们并不知道其他进程的存在。
例如,批处理系统中建立的多个用户进程,分时系统中建立的多个终端进程。
由于这些进程共用了一套计算机系统资源,因而,必然要出现多个进程竞争资源的问题。
当多个进程竞争共享硬设备、变量、表格、链表、文件等资源时,可能导致处理出错。
由于相互竞争资源时进程间并不交换信息,但是一个进程的执行可能影响到同其竞争的进程,如果两个进程要访问同一资源,那么,一个进程通过操作系统分配得到该资源,另一个将不得不等待。
在极端的情况下,被阻塞进程永远得不到访问权,从而不能成功地终止。
所以,资源竞争出现了两个控制问题:
一个是死锁(Deadlock)问题,一组进程如果都获得了部分资源,还想要得到其他进程所占有的资源,最终所有的进程将陷入死锁。
另一个是饥饿(Starvation)问题,例如,三个进程p1、p2、p3均要周期性访问资源R。
若p1占有资源,p2和p3等待资源。
当p1离开临界区时,p3获得了资源R。
如果p3退出临界区之前,p1又申请并得到资源R,如此重复造成p2老是得不到资源R。
尽管这里没有产生死锁,但出现了饥饿。
对于临界资源,操作系统需要保证诸进程能互斥地访问这些资源,既要解决饥饿问题,又要解决死锁问题。
进程的互斥(MutualExclusion)是解决进程间竞争关系的手段。
指若干个进程要使用同一共享资源时,任何时刻最多允许一个进程去使用,其它要使用该资源的进程必须等待,直到占有资源的进程释放该资源。
临界区管理可以解决进程互斥问题,本章第二节将详细介绍临界区的解决方案。
第二种是协作关系,某些进程为完成同一任务需要分工协作。
我们在前面给出了一个例子,input、process、和output三个进程分工协作完成读入数据、加工处理和打印输出任务,这是一种典型的协作关系,各自都知道对方的存在。
这时操作系统要确保诸进程在执行次序上协调一致,没有输入完一块数据之前不能加工处理,没有加工处理完一块数据之前不能打印输出等等,每个进程都要接收到它进程完成一次处理的消息后,才能进行下一步工作。
进程间的协作可以是双方不知道对方名字的间接协作,例如通过共享访问一个缓冲区进行松散式协作;
也可以是双方知道对方名字,直接通过通信进行紧密协作。
进程的同步(Synchronization)是解决进程间协作关系的手段。
指一个进程的执行依赖于另一个进程的消息,当一个进程没有得到来自于另一个进程的消息时则等待,直到消息到达才被唤醒。
不难看出,进程互斥关系是一种特殊的进程同步关系,即逐次使用互斥共享资源。
3.2互斥的实现方法
3.2.1互斥算法
3.2.1.1Dekker算法
荷兰数学家T.Dekker算法能保证进程互斥地进入临界区,这是最早提出的一个不需轮换的软件互斥方法,此方法用一个指示器turn来指示应该哪一个进程进入临界区。
若turn=0则进程P0可以进入临界区;
若turn=1则进程P1可以进入临界区。
Dekker算法的程序如下:
varinside:
array[0..1]ofBoolean;
Turn:
integer;
turn:
=0or1;
inside[0]:
=false;
inside[1]:
cobegin
processP0
begin
inside[0]:
=true;
whileinside[1]doifturn=1then
whileturn=1dobeginend;
end
临界区;
turn=1;
end;
processP1
inside[1]:
whileinside[0]doifturn=0then
whileturn=0dobeginend;
turn=0;
coend
这种方法显然能保证互斥进入临界区的要求,这是因为仅当tum=i(i=0,1)时进程Pi(i=0,1)才能进入其临界区。
因此,一次只有一个进程能进入临界区,且在一个进程退出临界区之前,turn的值是不会改变的,保证不会有另一个进程进入相关临界区。
同时,因为turn的值不是0就是1,故不可能同时出现两个进程均在while语句中等待而进不了临界区,但是不能解决“空闲让进”问题。
3.2.1.2
Peterson算法
在1981年,G
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CH3 讲义 讲解