操作系统习题集 - 2 - 进程管理(2)

2019-03-05 22:50

牌而等待在while语句中。由于两个进程都不会放下自己的标志牌,因此都无法进入临界区,不能满足“有限等待”的条件。所以,上述程序是错误的。

设置信号量S实现对共享变量count的互斥访问。

Share:count=0; struct semaphore S=1; cobegin

Process P0:

do { P(S);

count=count+1; V(S);

}while(1);

Process P1: do {

P(S);

count=count+1; V(S);

9. 假定一个阅览室最多可容纳100人,读者进入和离开阅览室时都必须在阅览室门口的一个登记表上进行登记,而且每次只允许一人进行登记操作。用信号量实现该过程。 解:设置信号量S:控制进入阅览室的人数。初值=100。 设置信号量mutex:控制登记表的互斥使用。初值=1。 struct semaphore s=100,mutex=1;

6

}while(1);

coend

cobegin

reader (i ) (i=1,2,?,k)

{

P(S); P(mutex); 写登记表; V(mutex); 阅读;

P(mutex);

写登记表; V(mutex);

V(S); 离开;

}

coend

10. 在具有N个进程的系统中,允许M个进程(N≥M≥1)同时进入它们的共享区,其信号量S的值的变化范围是(1) ,处于等待状态的进程数最多是(2)个。

解:信号量S用于控制进入共享区的进程数,初值为M。极端情况是N个进程都需要进入共享区。 (1)(M-N,M); (2)N-M

11. 在测量控制系统中,数据采集任务把所采集的数据送一单缓冲区;计算任务从该缓冲区中取出数据进行计算。试写出利用信号量机制实现两者共享单缓冲区的同步操作算法。 解:设置信号量S1和S2控制数据采集任务与计算任务之间的同步。 初值:S1=1,S2=0。

7

struct semaphore S1=1, S2=0; cobegin

数据采集任务: 计算任务: begin

end

begin

While(true){

采集数据; P(S1);

While(true){

P(S2);

从缓冲区读出数据;

数据写入缓冲区; V(S2);

V(S1); }

计算;

} end coend

12. 有n+1个进程A1,A2,?,An和B,A1,?,An通过同一缓冲区各自不断向B发消息,B不断取消息,它必须取走发来的每一个消息。刚开始时缓冲区为空,试用P、V操作正确实现之。 解:设置信号量S1和S2控制进程Ai与进程B之间的同步。初值:S1=1,S2=0。 设置信号量S控制进程Ai之间互斥地使用缓冲区。初值:S=1。 struct semaphore S1=1, S2=0, S=1; cobegin

进程Ai(i=1,2,···,n): begin

进程B: begin

While(true){

P(S2);

从缓冲区读出消息;

While(true){

P(S1); P(S);

8

} end

消息写入缓冲区; V(S); V(S2);

V(S1); }

end

coend

13. 桌子上有一只盘子,每次只能放入或取出一个水果。现有许多苹果和橘子。一家四口人各行其职。爸爸专向盘子中放苹果,妈妈专向盘子中放橘子,儿子专等吃盘子中的橘子,女儿专等吃盘子中的苹果。请用PV操作来实现四人之间的同步算法。

解:设置信号量empty表示盘子的状态。初值:empty =1。

设置信号量apple表示盘子中的苹果。初值:apple =0。 设置信号量orange表示盘子中的橘子。初值:orange =0。 struct semaphore empty =1, apple =0, orange =0; Parbegin 爸爸: begin

L1: P(empty);

放苹果; V(apple); Goto L1; End;

妈妈:begin

L2: P(empty);

放橘子; V(orange);

9

Goto L2; End;

女儿:begin

L3: P(apple);

取苹果; V(empty); Goto L3; End;

儿子:begin

L4: P(orange);

取橘子; V(empty); Goto L4; End;

Parend

14. 下面是两个并发执行的进程。它们能正确运行吗?若不能请举例说明,并改正之。 Parbegin

Var x:integer;

Process P1 Var y,z:integer; Begin x:=1; ① y:=0; ③

Process P2

Var t,u:mteger; Begin x:=0; ②

t:=0; ⑥

10


操作系统习题集 - 2 - 进程管理(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:监火人培训教材

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: