- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
操作系统同步例题
操作系统同步例题
操作系统同步例题
13. 于生 者—消 者 ,假 冲区是无界的, 用信号灯与 PV 操作 出解法。
答:因为是无界 冲区, 所以生 者不会因得不到 冲区而被堵塞, 不需要 空 冲区 行
管理,能够去掉在有界 冲区顶用来管理空 冲区的信号量及其 PV操作。
semaphore mutex_in=1;
semaphore mutex_out=1;
semaphore empty=0;
int in=0 ,out=0;
生 者活 : 消 者活 :
while(1){ while(1){
produce next product; P(empty);
P(mutex_in); P(mutex_out);
add the product to buffer[in]; take the product from buffer[out];
in++; out++;
v(mutex_in); V(mutex_out);
V(empty); }
}
有一个能够装 A、B 两种物件的 , 其容量无穷大,但要求 中 A、B 两种物件的数目 足下述不等式 :
M≤ A 物件数目- B 物件数目≤ N
此中 M和 N 正整数。 用信号灯和 PV 操作描绘 A、 B 两种物件的入 程。
答:已知条件 - M≤A 物件数目- B 物件数目≤ N 能够拆成两个不等式,即
A 物件数目- B 物件数目≤ N,
B 物件数目- A 物件数目≤ M。
两个不等式的含 是: 中 A 物件能够比 B 物件多,但不可以超 N个;B物件能够比 A 物件多,但不可以超 M个。
semaphore a=n;
semaphore b=m;
void main(){
createprocess(A, ?);
createprocess(B, ?);
}
物件入 :
void A(){
while(1){
物件入 :
void B(){
while(1){
P(a); P(b);
A 物件入库 ; B 物件入库 ;
V(b); V(a);
} }
} }
试用信号灯与 PV操作实现司机与售票员之间的同步问题。设公共汽车上有一个司机和一个售票员,其活动以下列图
所示。
为了安全起见, 明显要求 : (1) 关车门后方能启动车辆; (2) 到站泊车后方能开车门。 亦即“启动车辆” 这一活动应该在 “关车门” 这一活动以后, “开车门” 这一活动应该在 “到站泊车”这一活动以后。
解:假如进度 P2 还没有推动到②处时, 进度 P1 已经推动到①处, 则 P1 应等候直到 P2 推动到
②处为止;相同,假如进度
P1 还没有推动到③处时,进度
P2 已经推动到④处,则
P2 应等候
直到 P1 推动到③处为止。假如进度
P1 在①处发生了等候,则当进度
P2 履行到②处时应将
P1 唤醒;相同,假如进度
P2 在④处发生了等候,则当进度
P2 履行到③处时应将
P1 唤醒。
用信号量和 P、 V 操作解决这一问题,需要定义两个信号量,一个信号量
start
表示能否允
许司机启动车辆,另一个信号量
open 表示能否同意售票员开车门。初始状态是车停在始发
站,车门开着,等候乘客上车。所以,两个信号量的初值都是
0。
semaphore start=0;
semaphore open=0;
司机的活动 :
售票员的活动 :
P1: do{
P2: do{
P(start);
关车门 ;
启动车辆 ;
V(start);
正常行车 ;
售票 ;
到站泊车 ;
P(open);
V(open);
开车门 ;
}while (1);
}while (1);
16. 设有 A、B、C 三组进度,它们互斥地使用某一独占型资源
R,使用前申请,使用后释
放。资源分派原则以下 :
(1)
当只有一组申请进度时,该组申请进度挨次获取
R;
(2)
当有两组申请进度时,各组申请进度交替获取
R,组内申请进度挨次获取
R;
(3)
当有三组申请进度时,各组申请进度轮番获取
R,组内申请进度挨次获取
R。
试用信号灯和 PV 操作分别给出各组进度的申请活动程序段和开释活动程序段。
解:
int free=1;
设自行车生产线上有一只箱子,
此中有 N 个地点 (N≥ 3) ,每个地点可寄存一个车架或一个车
轮; 又设有三个工人,其活动分别为:
工人 1 活动:
工人 2 活动:
工人 3 活动:
do {
do {
do {
加工一个车架 ;
加工一个车轮 ;
箱中取一车架 ;
车架放入箱中 ;
车轮放入箱中 ;
箱中取二车轮 ;
}while(1)
}while(1)
组装为一台车 ;
}while(1)
试
文档评论(0)