1.简述信号量S的物理含义。
S>0时,S表示可使用的资源数;或表示可使用资源的进程数;
S=0时,表示无资源可供使用;或表示不允许进程再进入临界区;
S<0时,-S表示等待使用资源的进程个数;或表示等待进入临界区的进程个数;
当S>0时,调用P(S)的进程不会等待;调用V(S)后使可用资源数加1或使可用资源的进程数加1;
当S<0时,调用P(S)的进程必须等待;调用V(S)后将释放一个等待使用资源者或释放一个等待进入临界区者。
2.两个并发进程的程序如下:
begin
N:integer;
N:=1;
cobegin
process A
begin
L1:N:=N+1;
go to L1;
end;
process B
begin
L2:print(N);
N:=0;
go to L2;
end;
coend;
end;
请回答:
(1)指出这两个并发进程的临界区。
(2)指出它们并发执行时可能出现的“与时间有关的错误”。
(3)用PV操作进行管理,写出使它们能正确并发执行的程序。
(1)进程A的临界区为 N:=N+1;(1分)
进程B的临界区为 print(N);
N:=0;(1分)
(2) 进程B执行了print(N)后被中断;(1分)在执行N:=0之前插入了进程A执行N:=N+1,则出现“与时间有关的错误”。(1分)
(3) begin N:=integer; N:=1;
s:=semaphore;s:=1
cobegin
process A
begin
L1:p(s);(1分)
n:=N+1;
V(s);(1分)
go to L1;
end;
process B
begin
L2:p(s); end;
Print(N); coend;
N:=0; end;
V(s);
go to L2
3.用PV操作解决读者写者问题的正确程序如下:
begin S, Sr: Semaphore; rc: integer;
S:=1; Sr:=1; rc:=0;
cobegin PROCESS Reader i ( i=1,2…)
begin P(Sr)
rc:=rc+1;
if rc=1 then P(S);
V(Sr);
read file;
P(Sr);
rc:=rc-1
if rc=0 thenV(S);
V(Sr);
end ;
PROCESS Writer j (j=1,2…)
begin P(S);
Write file;
V(S)
end;
coend ;
end;
(1)信号量 Sr的作用;(2)程序中什么语句用于读写互斥,写写互斥;(3)若规定仅允许5个进程同时读怎样修改程序?
(1)Sr用于读者计数rc的互斥信号量;(3分)
(2)if rc=1 then P(S)中的P(S)用于读写互斥,写者进程中的P(S)用于写写互斥,读写互斥。(3分)
(3)程序中增加一个信号量S5,初值为5,P(S5)语句加在读者进程P(Sr)之前,V(S5)语句加在读者进程第2个V(Sr)之后。(4分)
3.某招待所有100个床位,住宿者入住要先登记(在登记表上填写姓名和床位号)。离去时要注销登记(在登记表上删去姓名和床位号)。请给出住宿登记及注销过程的算法描述。
答:mutex=1,empty=100;
登记:
P(empty);
P(mutex)
登记
V(mutex)
注销:
P(mutex);
登记表上删去姓名和床位号
V(mutex)
V(empty)
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务