没有合适的资源?快使用搜索试试~ 我知道了~
操作系统PV操作习题.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 32 浏览量
2022-06-22
16:39:43
上传
评论 3
收藏 293KB DOC 举报
温馨提示
试读
58页
一、用P、V操作描述前趋关系。P1、P2、P3、P4、P5、P6为一组合作进程,其前趋图如 图2.3所示,试用P、V操作描述这6个进程的同步。p23 图2.3说明任务启动后P1先执行,当它结束后P2、P3可以开始执行,P2完成后P4、P5可 以开始执行,仅当P3、P4、P5都执行完后,P6才能开始执行。为了确保这一执行顺序, 设置5个同步信号量n、摄、f3、f4、g分别表示进程P1、P2、P3、P4、P5是否执行完成, 其初值均为0。这6个进程的同步描述如下: 图2.3 描述进程执行先后次序的前趋图 int f1=0; /*表示进程P1是否执行完成*/ int f2=0; /*表示进程P2是否执行完成*/ int f3=0; /*表示进程P3是否执行完成*/ int f4=0; /*表示进程P4是否执行完成*/ int f5=0; /*表示进程P5是否执行完成*/ main() { cobegin P1( ); P2( ); P3( ); P4( ); P5( ); P6( ); coend } P1 ( ) { v(f1); v(f1): } P2 ( ) { p(f1); v(f2
资源推荐
资源详情
资源评论
操作系统 PV 操作习题
一、用 P、V 操作描述前趋关系。
P1、P2、P3、P4、P5、P6 为一组合作进程,其前趋图如图
2.3 所示,试用 P、V 操作描述这 6 个进程的同步。p23
图 2.3 说明任务启动后 P1 先执行,当它结束后 P2、P3
可以开始执行,P2 完成后 P4、P5 可以开始执行,仅当
P3、P4、P5 都执行完后,P6 才能开始执行。为了确保这一
执行顺序,设置 5 个同步信号量 n、摄、f3、f4、g 分别表
示进程 P1、P2、P3、P4、P5 是否执行完成,其初值均为
0。这 6 个进程的同步描述如下:
图 2.3 描述进程执行先后次序的前趋图
int f1=0; /*表示进程 P1 是否执行完成*/
int f2=0; /*表示进程 P2 是否执行完成*/
操作系统 PV 操作习题
int f3=0; /*表示进程 P3 是否执行完成*/
int f4=0; /*表示进程 P4 是否执行完成*/
int f5=0; /*表示进程 P5 是否执行完成*/
main()
{
cobegin
P1( );
P2( );
P3( );
P4( );
P5( );
P6( );
coend
}
P1 ( )
{
┇
v(f1);
v(f1):
}
P2 ( )
{
p(f1);
┇
v(f2);
v(f2);
)
P3 ( )
{
p(f1);
┇
v(f3);
}
P4( )
{
p(f2);
┇
v(f4);
操作系统 PV 操作习题
}
P5 ( )
{
p(f2);
┇
v(f5);
}
P6( )
{
p(f3);
p(f4);
p(f5);
┇
}
二、生产者-消费者问题 p25
生产者-消费者问题是最著名的进程同步问题。它描述了
一组生产者向一组消费者提供产品,它们共享一个有界缓
冲区,生产者向其中投放产品,消费者从中取得产品。生
产者-消费者问题是许多相互合作进程的一种抽象。例如,
在输入时,输入进程是生产者,计算进程是消费者;在输出
时,计算进程是生产者,打印进程是消费者。因此,该问
题具有很大实用价值。
我们把一个长度为 n 的有界缓冲区(n>0)与一群生产者进
程 P
1
、P
2
、…、Pm 和一群消费者进程 C
1
、C
2
、…、
Ck 联系起来,如图 2.4 所示。假定这些生产者和消费者是
互相等效的。只要缓冲区未满,生产者就可以把产品送入
缓冲区,类似地,只要缓冲区未空,消费者便可以从缓冲
区中取走物品并消耗它。生产者和消费者的同步关系将禁
止生产者向满的缓冲区输送产品,也禁止消费者从空的缓
冲区中提取物品。
操作系统 PV 操作习题
图 2.4 生产者-消费者问题
为解决这一类生产者-消费者问题,应该设置两个同步信
号量,一个说明空缓冲单元的
数目,用 empty 表示,其初值为有界缓冲区的大小 n,另一
个说明满缓冲单元的数目,用
full 表示,其初值为 0。在本例中有 P
1
、P
2
、…、Pm 个
生产者和 C
1
、C
2
、…、Ck 个消费者,它们在执行生产活
动和消费活动中要对有界缓冲区进行操作。由于有界缓冲
区是一个临界资源,必须互斥使用,所以,另外还需设置
一个互斥信号量 mutex,其初值为 1。生产者-消费者问题的
同步描述如下:
int full=O; /*满缓冲单元的数目*/
int empty=n; /*空缓冲单元的数目*/
int mutex=1; /*对有界缓冲区进行操作的互斥信号量*/
main()
{
cobegin
produceri();/*i=1,2,┅,m;j=l,2,┅,k*/
consumerj();
coend
}
produceri() /*i=1,2,┅,m*/
{
while(生产未完成)
{
┇
生产一个产品;
p(empty);
操作系统 PV 操作习题
p(mutex);
送一个产品到有界缓冲区;
v(mutex);
v(full);
)
}
consumerj() /*j=1,2,…,k*/
{
while(还要继续消费)
{
p (full);
p(mutex);
从有界缓冲区中取产品;
v (mutex);
v (empty);
┇
消费一个产品;
}
}
三、在操作系统中,进程是一个具有一定独立功能的程序
在某个数据集上的一次
__________。
A.等待活动 B.运行活动
C.单独操作 D.关联操作
答:B
四、多道程序环境下,操作系统分配资源以______
_为基本单位。
A.程序 B.指令 C 进程 D.作业
答:C
五、对于两个并发进程,设互斥信号量为 mutex,若
mutex=O,则_____。
A.表示没有进程进入临界区
B.表示有一个进程进入临界区
剩余57页未读,继续阅读
是空空呀
- 粉丝: 168
- 资源: 3万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页