当前位置:文档之家› 操作系统pv操作共34页

操作系统pv操作共34页

所采用信号量的初值不相同。 在情况(1)中,信号量的初值为1, 信号量值的变化范围是l,0,-1…-(n-1)。 在情况(2)中,信号量的初值为M, 信号量值的变化范围是M,m-1,m-2…(m-n)。
有一个售票厅只能容纳200人,当少于200人时,可 以进入;否则需在外等侯。 若将每一个购票者作为一个进程,请用P、v操作描 写其互斥关系。
令p[1:n]为1到n(n>1)的整数置换, 设i=1,2,3,4,5,6,7; p[i]=4,7,3,2,1,5,6;
描述p[i]的巡回置换算法。(巡回置换指k∈[1:n] 时,k=p[...p[k]...]的置换。)
p[i]=4,7,3,2,1,5,6;
巡回置换算法的执行结果 Begin
local x, k; k1; while k<=7
P(s); 过桥;
V(s) end Coend end
两个并发进程的程序如下:
begin N;Integer; N:=3;
cobegin
PROCESS A
begin L1:N:=N+5;
goto Ll end;
PROCESS B
bend ; coend; end;
cobegin PROCESS A begin L1: P(S); N:=N+5; V(S); goto L1 end;
PROCESS B
begin L2:P(S);
print(N); N:=0;
V(S);
goto L2 end; coend; end
南京大学2000年试题
桌子上有一只盘子,最多可容纳两个水果,每次只能放入 或取出一个水果。爸爸专向盘子中放苹果,妈妈专向盘子 中放橘子,两个儿子专等吃盘子中的橘子,两个女儿专等 吃盘子中的苹果。请用PV操作来实现爸爸、妈妈、儿子、 女儿之间的同步与互斥关系。
当出现情况(1)时,出现的打印值为18;当出现情况(2)时, 出现的打印值为18;当出现情况(3)时,出现的打印值为23。
为了使它们并发执行时不出现与时间有关的错误,我们采 用了PV操作进行管理,其管理 的程序如下:
begin s: semaphore; N:integer; N:=3; S:=1;
若PROCESS A先执行了 三个循环后,PROCESS A和PROCESS B 又并发 执行了一个循环,写出可
能出现的打印值。请用 PV操作进行管理,使它 们并发执行时不出现与时 间有关的错误。
[解答]若PR0CESS A先执行了三个循环后,N值变为 3+5+5+5=18;这时PROCESS A和PROCESS B并发执行 了一个循环,这时可能出现的情况有以下几种: (1)print(N);N:=0;N:=N+5; (2)print(N);N:=N+5; N:=0; (3)N:=N十5;print(N); N:=0;
解:根据题意,A程序的运行时间为: 10+5+5+10+10=40 s, 其中cpu的运行时间为:10+5+10=25s。 B程序的运行时间为:10+10+5+5十10=40s, 其中cpu的运行时间为;10+5=15s。 cpu的利用率为:(15+25)/(40+40)=50%
设有n个进程共享一个程序段,对如下两种情况: (1)如果每次只允许一个进程进入该程序段; (2)如果每次最多允许m个进程(M<=n)同时进入该 程序段。 试问:所采用的信号量初值是否相同?信号量值的变 化范围如何?
题解:盘子是三个人的公有信号量,设为mutex,初值为1, 服务员的私有信号量设为empty初值为1,男顾客的私有信 号量为ba,初值为0,女顾客的私有信号量为cm,初值为0。
waiter :begin
L1: p(empty);
p(mutex); 放香蕉或草 莓;
v(mutex); 如果放香蕉 则v(ba); 否则v(cm); goto L1;
设公有信号量mutex=200 购票者进程:
cobegin
p(mutex) 进入购票厅; 购票;
v(mutex)
coend
习题 1.一条小河上有一座独木桥,规定每次只允许一人过桥。如 果把每个过桥这看作一个进程,为保证安全,请用PV操作 实现正确管理。
begin s:semaphore; s:=1; cobegin begin
end;
Woman:begin L3: p(cm);
p(mutex); 取草莓;
v(mutex); v(empty); goto L2; end;
Parbegin Father:begin L1: p(empty);
p(mutex); 放苹果; v(mutex); v(apple); goto l1; end;
Mather:begin L2:p(empty);
p(mutex); 放橘子; v(mutex); v(orange); goto l2; end;
Daughter:begin L3:p(apple);
p(mutex); 取苹果; v(mutex); v(empty); goto l3; end;
L4:p(orange); p(mutex); 取橘子; v(mutex); v(empty); Goto l4; end;
桌上有一个空的水果盘,盘中一次只能放一个水 果,服务员、男顾客和女顾客共用这个盘子。服 务员向盘中放草莓和香蕉,男顾客专等吃盘中的 草莓,女顾客专等吃盘中的香蕉。规定每次当盘 子空时只能放一个水果供顾客食用。请用信号量 机制实现服务员、男顾客和女顾客三个进程的同 步。
do xk; repeat print(x); x p[x]; until x=k; kk+1;
od End
142765 276514 3 427651 514276 6 51427 7 65142
有两个程序,A程序按顺序使用CPU l0s,使用设备甲5s, 使用CPU 5s,使用设备乙10 s,最后使用CPU l0s。B程序 按顺序使用设备甲10s,他用CPU 10s,使用设 备乙5s,使用CPU 5s,使用设备乙10s。在顺序环境下先 执行A程序再执行B程序,CPU的利用率是多少?
相关主题