操作系统复习题(2)

来源:网络收集 时间:2025-09-23 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xuecool-com或QQ:370150219 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

可能进入死锁状态。将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;

百度搜索“70edu”或“70教育网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,70教育网,提供经典教育范文操作系统复习题(2)在线全文阅读。

操作系统复习题(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.70edu.com/fanwen/1026323.html(转载请注明文章来源)

相关推荐:

Copyright © 2020-2025 70教育网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:370150219 邮箱:370150219@qq.com
苏ICP备16052595号-17
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:7 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219