- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章 进程管理;第二章 进程管理;一、进程的概念和描述;;;;;;;;例:;;例;;;;;例:;;;;;;;;;;;二、进程控制;;;;;;;;;;;;;;;;;;;;;;三、进程的互斥和同步; 例:;与时间有关的错误;1.临界区和临界资源 ;pin的临界区
;;;3.什么是同步?
例:设有两个进程A和B,它们共享一个缓冲器Buffer,进程A不断地读入数据并送到缓冲器,而进程B不断地从缓冲器中取出数据进行加工处理,如图所示。
;;;; 2.P、V操作原语
事实上,P操作和V操作是两个很简单的过程,只是它们和前面所介绍的进程控制原语一样,在执行过程中是不可中断的,所以分别称为P操作原语和V操作原语。P、V操作原语的实现流程如图下所示。
;;produce V(Var S:Semaphore)
begin
S:=S+1;
if S=0 then R(S)
end;{V}
;只要用一个信号量和若干个涉及共享公共资源的临界区联系起来,把信号量的初值设为1,任何一个进程要进入临界区前先调用P操作,执行完临界区的操作而退出临界区时调用V操作。这样,P操作所起到的作用是限制了一次只有一个进程进入临界区,而其余欲进入临界区的进程必须等待。由于任何一个进程在退出临界区时都调用V操作,当有进程在等待进入临界区时,V操作将释放一个进程,使它可以进入临界区执行,因而不会出现进程无限地停留在临界区或无限地等待进入临界区的情况。显然,这完全符合对临界区管理的三个要求。
;begin
count:integer;
S:semaphore;
count:=0
S:=1;
cobegin
procedure pin
R1:integer;
begin
P(S);
R1:=count;
R1:=R1+1;
count:=R1
V(S)
end;;当n个进程P1,P2,…,Pn要共享某一资源时,为保证公用资源的互斥使用,首先设置一个信号量S,并将初值定为1,然后找出n个进程各自的临界区,对每个进程都用关于该信号量S的P、V操作的来实现进入和退出临界区。进程Pi(i=1,2,…,n)互斥的一般形式为:
;例;begin
S:semaphore;
S:=1;
cobegin
procedure Pi(i=1,2,…,n)
begin
按旅客订票要求找到Aj;
P(S);
Ri:=Aj;
if Ri=1 then begin Ri:=Ri-1;
Aj:=Ri;
V(S);
输出一张票
end
else begin V(S);
输出“票已售完”
end
end;
coend;
end; ;练习:;begin Buffer:integer; SP,SG:semaphore; SP:=1;SG:=0;;;begin
Buffer:array[0..(n-1)] of integer;
k,t:integer;
SP,SG:semaphore;
k:=0;t:=0;
SP:=n;SG:=0;
cobegin
;begin
B:integer;
S,SO,SE:semaphore;
S=1;SO:=0;SE:=0;
Cobegin
;例:现在每个生产者producer_i(i=1,2,…,m)和每个消费者consumer_j(j=1,2,…,r)可按下面的程序并发执行。
;进程间同步关系也可以用前趋图表示。
例:C和P两进程间先计算再打印的同步关系用前趋图表示如下:
对应这个前趋关系可设置同步信号量full初值为0。其并发执行程序如下:
Full=0
begin
cobegin
C:begin computer;V(full);end
P: begin P(full);print;end
coend
end;;P6;; Begin
plate:=1;apple:=0;orange:=0;
cobegin
;;;四、进程通信; 1.邮件格式
电子邮件和我们
文档评论(0)