司机 售票员 进程同步 c语言,作业1-进程同步-答案

操作系统作业

1、 用记录型信号量解决以下问题,用类C语言编写进程同步算法。

司机 P1 售票员 P2

REPEAT REPEAT 启动 关门 正常运行 售票 到站停 开门 UNTIL FALSE UNTIL FALSE 2、 两个进程合作完成数据计算和打印工作,计算进程未计算完就不可打印,反之也然,双方共

用一个缓冲区,写出此算法。

3、 桌子上有一只盘子,最多可容纳两个水果,每次只能放人或取出一个水果。爸爸专向盘子中

放苹果(apple),妈妈专向盘子中放桔子(orange),两个儿子专等吃盘子中的桔子,两个女儿专等吃盘子中的苹果。请用P、V操作来实现爸爸、妈妈、儿子、女儿之间的同步与互斥关系。

4、 桌子上有一只盘子,每次只能放入一只水果。爸爸专向盘中放苹果,妈妈专向盘中放桔子,

一个儿子专等吃盘中的桔子,一个女儿专等吃盘中的苹果。请利用P、V操作写出父亲、母亲、儿子、女儿进程的同步算法。

5、 设有四个并发执行的进程P1、P2、P3、p4,其前趋图如下,试用信号量实现这四个进程同

步。

1 Var s1,s2:semaphore:=0,0; parbegin 司机 P1 REPEAT wait(s1) 启动

正常运行 到站停 Signal(s2) UNTIL FALSE 售票员 P2

REPEAT 关门

Signal(s1) 售票

Wait(s2) 开门

UNTIL FALSE parend 2 Var empty, full: semaphore:=1,0; parbegin Calculate: begin repeat wait(empty); 计算; signal(full); until false; end Print: begin repeat wait(full); 打印; signal(empty); until false; end parend 3 盘子为互斥资源,因可以放两个水果,empty初值为2;再设信号量mutex初值为1,控制对盘子的互斥访问;apple表示盘中苹果个数,orange表示盘中桔子个数,初值均为0。

Var mutex, empty, apple, orange:semaphore:=1,2,0,0; parbegin Father: begin p(empty); P(mutex); 放苹果; V(mutex); V(apple); end; Mother: begin P(empty); P(mutex); 放桔子; V(mutex); V(orange); End; Daughter: begin p(apple); P(mutex); 取苹果; V(mutex); V(empty); End; Son: begin P(orange); P(mutex); 取桔子; V(mutex); V(empty); End; Parend 4 在本题中,应设置三个信号量s、so、sa 信号量s表示盘子是否为空,其初值为1; 信号量so表示盘中是否有桔子,其初值为0; 信号量sa表示盘中是否有苹果,其初值为0. 同步描述如下: var s, so, sa: semaphone:=1, 0, 0; parbegin father ( ); mother( ); son ( ); daughter ( ); parend father ( ) wait(s); 将水果放入盘中; signal(sa); mother ( ) wait(s); 将水果放入盘中; signal(so); son ( ) wait(so); 从盘中取出桔子; signal(s); 吃桔子; daughter ( ) wait(sa); 从盘中取出苹果; signal(s); 吃苹果; 5 var a,b,c,d:semaphore:=0,0,0,0; parbegin P1: begin … signal(a); signal(b); end P2: begin wait(a); … signal(c); end P3: begin wait(b); … signal(d); end P4: begin wait(c); wait(d); … end Parend

第 1 页 共 1 页

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值