- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
进程同步例题精选
2003.试题一.4.关于临界区问题(critical section problem)是一个算法(假设只有进程P0 和P1
可能进入该临界区),如下(i 为0 或1 ),该算法_____
A 、 不能保证进程互斥进入临界区,且会出现“饥饿”(Starvation )
B、 不能保证进程互斥进入临界区,但不会出现“饥饿”
C、 保证进程能互斥进入临界区,但会出现“饥饿”
D、 保证进程互斥进入临界区,不会出现“饥饿”
reapeat
retry: if(turn≠-1) turn:=i;
if(turn≠i) go to retry;
turn:=-1;
critical Section(临界区)
turn=0;
remainder Section(其他区域)
until false;
解:应该选A。首先考虑不能保持互斥:P0 令turn =0 ,然后P1 执行retry 发现turn≠-1 ,所
以P1 令turn =1 ;然后或者P0 或者P1 先后令turn =-1 ,然后都进入临界区。如果某个进
程 P0 (或P1 )从临界区出来(这时turn =0 )又要进入,则令turn =i ,则它又能进入,重
复该过程则可能导致另外的一个进程饥饿。
2004.试题5.假设缓冲区buf1 和缓冲区buf2 无限大,进程p1 向buf1 写数据,进程p2 向buf2
写数据,要求buf1 数据个数和buf2 数据个数的差保持在(m,n)之间(mn,m,n 都是正数).
分析 :题中没有给出两个进程执行顺序之间的制约关系,只给出了一个数量上的制约关系,
即m=|buf1 数据个数-buf2 数据个数|=n .不需要考虑缓冲区的大小,只需要考虑两个进
程的同步和互斥.p2 向buf2 写数据比p1 向buf1 写数据的次数最少不超过m 次,最多不能
超过n 次,反之也成立.所以是一个生产者和消费者问题。
将等式展开得:(1)m=(buf1 数据个数-buf2 数据个数)=n; (2)m=(buf2 数据个数-buf1 数
据个数)=n; 由于m,n 都是正数,等式只有一个成立,不妨设(1)成立.在进程p1 和p2 都没
有运行时,两个缓冲区数据个数之差为0,因此,p1 必须先运行,向buf1 至少写m+1 个数据
后再唤醒p2 运行.信号量s1 表示p1 一次写入的最大量,初值为n(这时buf2 数据个数为0 ),
s2 表示p2 一次写入的最大量,初值为-m (这时buf1 数据个数为0 ).
begin
var mutex1=1,mutex2=1,s1=n,s2=-m:semaphore;
cobegin
process p1
begin
repeat
get data;
p(s1);
p(mutex1);
写数据到buf1;
v(mutex1);
v(s2);
end
process p2
begin
repeat;
get data;
p(s2);
p(mutex2);
//两个进程的互斥信号量应该用同一个mutex 即可
文档评论(0)