- 1、本文档共28页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统张霞版课后重要习题答案剖析
作业
第三章 习题11
设信号量empty为生产者进程的私用信号量,初值为m,表示空缓冲区的数目。
信号量full为消费者进程的私用信号量,初值为0,表示已用缓冲区的数目。
设第i块缓冲区的公用信号量为mutex[i]保证生产者进程和消费者进程对同一块缓冲区操作的互斥,初值为1。
第三章 习题11
Producer(data)
Begin
P(empty); //获取空缓冲区
选择一个空缓冲区i;
P(mutex[ i ] ); //进入临界区
送数据入缓冲区i;
V(mutex [ i ] ) ; //离开临界区
V(full) ; //满缓冲区加1
End
第三章 习题11
Consumer(data)
Begin
P(full); //获取满缓冲区
选择一个满缓冲区i;
P(mutex[ i ] ); //进入临界区
取缓冲区i中的数据;
V(mutex [ i ] ) ; //离开临界区
V(empty); //空缓冲区数加1
End
习题12
所用信号量和其他变量设置如下:
设互斥信号量RW_mutex,初值为1,用于实现写者与其他写者或读者互斥地访问共享的数据对象。
设整型读者计算器变量RC,初值为0,用于对读者数进行计数。
设互斥信号量R_mutex,初值为1,用于实现诸读者互斥地访问读者计数器变量。
习题12
读者 写者
P(R_mutex); P(RW_mutex);
若RC=0则 P(RW_mutex); 对数据对象进行写操作;
RC加1; V(RW_mutex);
V(R_mutex);
读数据对象;
P(R_mutex);
RC减1;
若RC=0则 V(RW_mutex);
V(R_mutex);
习题13
所用信号量设置如下:
爸爸进程的同步信号量empty,初值为1,表示盘子是空的,即儿子或女儿已把盘中的水果取走。
儿子进程的同步信号量orange,初值为0,表示爸爸尚未把桔子放入盘中。
女儿进程的同步信号量apple,初值为0,表示爸爸尚未把苹果放入盘中。
习题13
爸爸进程(P):
P(empty);
将水果放入盘中;
若放入的是桔子,
则V(orange);
否则,V(apple);
儿子进程(C1):
P(orange );
从盘中取出桔子;V(empty) ;
吃桔子;
女儿进程(C2):
P(apple);
从盘中取出苹果;
V(empty);
吃苹果;
习题14
A、B、C之间的临界资源为缓冲区,AB、AC之间同步; AB、AC、BC之间互斥;
设临界资源缓冲区的公有信号量为mutex,表示可用缓冲区的数量,mutex=1;
A的私用信号量为empty,表示缓冲区中空单元的个数,empty=N;
B的私用信号量为odd,表示缓冲区中奇数的个数,odd=0;
C的私用信号量为even,表示缓冲区中偶数的个数,even=0;
习题14
A:
{ x=produce( );
P(empty);
P(mutex);
Put( );
If(x%2==0)
V(even);
else
V(odd);
v(mutex);
}
习题14
B:
{ P(odd);
P(mutex);
getodd();
countodd( );
V(mutex);
V(empty);
}
习题14
C:
{ P(even);
P(mutex);
geteven();
counteven ( );
V(mutex);
V(empty);
}
习题18
(1)由题可得出T0时刻各进程的资源需求情况:
P1(3 4 7),P2(1 3 4 ),P3(0 0 6),
P4(2 2 1),P5(1 1 0)
剩余资源
文档评论(0)