操作系统复习题(2)

2025-09-23

可能进入死锁状态。将P(full)与P(mutex)互换位置,系统也可能进入死锁状态。将V(full)与V(mutex)互换位置,系统不会出现什么问题,最多只是临界资源的释放推迟。

12. 假设有三个并发进程P,Q,R,其中P负责从输入设备上读入信息并传送给Q,Q将信息加工后传送给R,R则负责将信息打印输出。写出下列条件的并发程序:

(1)进程P、Q共享一个缓冲区,进程Q、R共享另一个缓冲区。

(2)进程P、Q共享一个由m个缓冲区组成的缓冲池,进程Q、R共享另一个由n个缓冲区组成的缓冲池。 参考答案:(1)

第一步:确定进程

3个进程P、Q、R P进程:

? 从输入设备上读入信息 ? 将信息放入缓冲区1 Q进程:

? 从缓冲区1取出信息 ? 将信息放入缓冲区2中 R进程:

? 从缓冲区2取出信息 ? 将信息打印输出

第二步:确定进程的同步、互斥关系

? 同步:P当缓存区1无数据时,才可以向缓冲区1写入信息 ? 同步:Q当缓存区1有数据时,才可以从缓冲区1读取信息 ? 同步:Q当缓存区2无数据时,才可以向缓冲区2写入信息 ? 同步:R当缓存区2有数据时,才可以从缓冲区2读取信息

第三步:设置信号量

? 缓存区1无数据,empty1,初值1 ? 缓存区1有数据,full1,初值0 ? 缓存区2无数据,empty2,初值1 ? 缓存区2有数据,full2,初值0

第四步:用伪代码描述

begin

empty1,empty2,full1,full2:semaphore; empty1 :=1; empty2 :=1; full1 :=0; full2 :=0;

cobegin

P ( ); Q ( );

R ( );

coend;

end;

process P ( )

begin

L1: 从输入设备上读入信息; P(empty1);

将信息放入缓冲区1; V(full1); goto L1 end;

process Q ( )

begin

L2:P(full1);

从缓冲区1取出信息;

V(empty1); P(empty2);

将信息放入缓冲区2;

V(full2); goto L2 end;

process R ( )

begin

L3:P(full2);

从缓冲区2取出信息;

V(empty2);

将信息打印输出 ;

goto L3 ; end;

(2)

第一步:确定进程

3个进程P、Q、R P进程:

? 从输入设备上读入信息

? 将信息放入缓冲池1中的一个空缓冲区中 Q进程:

? 从缓冲池1中的一个非空缓冲区中取出信息 ? 将信息放入缓冲池2中的一个空缓冲区中 R进程:

? 从缓冲池2中的一个非空缓冲区中取出信息 ? 将信息打印输出

第二步:确定进程的同步、互斥关系

? 同步:P当缓冲池1中有空的缓冲区时,才可以向缓冲池1写入信息

? 同步:Q当缓冲池1中有非空的缓冲区时,才可以从缓冲池1读取信息 ? 同步:Q当缓冲池2中有空的缓冲区时,才可以向缓冲池2写入信息 ? 同步:R当缓冲池2中有非空的缓冲区时,才可以从缓冲池2读取信息

第三步:设置信号量

? 缓冲池1中的空缓冲区的数量,empty1,初值m ? 缓冲池1中的非空缓冲区的数量,full1,初值0 ? 缓冲池2中的空缓冲区的数量,empty2,初值n ? 缓冲池2中的非空缓冲区的数量,full2,初值0

第四步:用伪代码描述

begin

empty1,empty2,full1,full2:semaphore; empty1 :=m; empty2 :=n; full1 :=0; full2 :=0;

cobegin

P ( ); Q ( );

R ( );

coend;

end;

process P ( )

begin

L1: 从输入设备上读入信息; P(empty1);

将信息放入缓冲池1中的一个空缓冲区中; V(full1); goto L1 end;

process Q ( )

begin

L2:P(full1);

从缓冲池1中的一个非空缓冲区中取出信息;

V(empty1); P(empty2);

将信息放入缓冲池2中的一个空缓冲区中;

V(full2); goto L2 end;

process R ( )

begin

L3:P(full2);

从缓冲池2中的一个非空缓冲区中取出信息;

V(empty2);

将信息打印输出 ;

goto L3 ; end;

13. 有四个并发进程:R1,R2,W1和W2,它们共享可以存放一个数的缓冲区。进程R1每次从磁盘读入一个数存放到缓冲区中,供进程W1打印输出;进程R2每次从键盘读一个数存放到缓冲区中,供进程W2打印输出。当缓冲区满时,不允许再向缓冲区中存放数据;当缓冲区空时,不允许再从缓冲区中取出数据打印输出。试用PV操作实现四个进程的协调运行。

参考答案:

第一步:确定进程

4个进程R1、R2、W1、W2 R1进程:

? 从磁盘上读入一个数 ? 将数存放到缓冲区中 W1进程:

? 将R1进程放进缓冲区中的数取出 ? 打印输出 R2进程:

? 从键盘读入一个数 ? 将数存放到缓冲区中 W2进程:

? 将R2进程放进缓冲区中的数取出 ? 打印输出

第二步:确定进程的同步、互斥关系

? 同步:R1当缓存区无数据时,才可以向缓冲区写入数据 ? 同步:R2当缓存区无数据时,才可以向缓冲区写入数据

? 同步:W1当缓存区中是R1写的数据时,才可以将数据从缓冲区中读出 ? 同步:W2当缓存区中是R2写的数据时,才可以将数据从缓冲区中读出

第三步:设置信号量

? 缓存区无数据,empty,初值1

? 缓存区中是R1写的数据,full1,初值0 ? 缓存区中是R2写的数据,full2,初值0

第四步:用伪代码描述

begin

empty, full1,full2:semaphore; empty :=1; full1 :=0; full2 :=0;

end;

cobegin

R1 ( ); R2 ( ); W1 ( ); W2 ( ); coend;

process R1 ( )

begin

L1: 从磁盘上读入一个数; P(empty);

将数存放到缓冲区中; V(full1); goto L1 end;

process R2 ( )

begin L2: 从键盘上读入一个数; P(empty);

将数存放到缓冲区中; V(full2); goto L2 end;

process W1 ( )

begin

L3:P(full1);

将缓冲区中的数取出; V(empty); 打印输出;

goto L3 end;

process W2 ( )

begin

L4:P(full2);

将缓冲区中的数取出; V(empty); 打印输出;

goto L4 end;


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

下一篇:一站到底(风俗、生活百科)

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

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