二.进程(5)信号量习题

1. 读者与写者(写者优先方式)

2. 黑白棋问题

3. 嗜睡的理发师问题

4. 生产与销售问题


读者与写者问题

(写者优先方式)

读者优先的关键:

若读者先占有互斥信号量,只有最后一个读者离开,计数降为0时才释放信号量,导致写者弱势。

写者优先同上述方法:

写者先占有某信号后,直到最后一个写者走完才释放该信号,读者才能进入。

【】 增加一个互斥信号量S,读者和写者都争抢该信号;

【】 对写者也进行计数,第1个写者申请S,其他写者不需要申请S;最后一个写者离开时才释放信号量S.

【】 一旦写者先申请到了S,则所有的读者只能等待写者都走完才可进入共享读。而多个写者通过S后,仍要争抢wmutex信号以完成互斥的写入。


用到的变量

读者间起作用:

【】 Readcount变量,rmutex信号量

写者间起作用:

【】 writecount变量,mutex信号量

读者与写者间起作用:

【】 wmutex

【】S

黑白棋子问题

问题描述

两个人下棋,一方执黑棋,一方执白棋。要求双方轮流下子。给出两种情况的解决办法:

1)执黑子一方先下

2)双方都可以先下,谁先抢到棋盘谁先下。然后开始轮流下子。



2)先抢到棋盘者先下,然后轮流下子

问题分析:

【】无法用单纯的信号量操作完成,因为初始值无法设置固定值。

【】争抢棋盘需要一个互斥信号m;加入if控制与标志判断。利用互斥信号量与特殊标志变量的结合使用实现有序控制。


嗜睡的理发师问题

问题描述

一个理发店有N个沙发,1个理发椅;

理发师:

持续睡觉,理发,收钱的动作

顾客:

【】若有沙发,进入等待;否则离开。

【】理发椅空,一顾客放弃沙发,去唤醒它理发;

【】理发后付费,付费完毕离开理发椅,离店。


生产与销售问题

问题描述

设一无限大仓库。就1个门,不允许同时入库,也不允许边入库边出库。

1)两个生产者A,B生产各自的产品入库;但要求满足关系Sa-Sb在限定的[-n,m]差值范围内。

2)一个销售者取产品销售,但对两种产品的卖出进度要把握在Ma-Mb也在[-n,m]范围内。

同步关系分析

互斥:三人在对仓库的使用上必须互斥(mutex=1)

顺序关系:

 1)生产者AB之间:因为假设仓库无限大,不需考虑空的限制。控制其能否生产的关键是再生产一个能否满足Sa-Sb在限定的[-n,m]范围内。

【】A、B关心的都是各自的生产指标数量,即A关心x=A-B这个变量的值,同样B关心y=B-A。

【】初值:初始若无产品,A最多可生产m个,B最多可生产n个。自己生产一个必然使对方可以多生产一个。

 2)生产与消费之间

【】关心卖出的A、B间的差值


2)生产与销售的关系

【】销售要做的:

【】是否有商品?

设置总商品数S,每次wait(S)

【】有商品,是A还是B?

设置A,B商品计数的信号量SA,SB。对某种商品执行取就wait(SA)

【】是否可以取?

p取操作要满足销售产品的关系。所以wait(SA/SB)前面需要判断控制---判断差值difference


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 从前有座山,山里有座庙,庙里有个老和尚,下面两个小和尚,每天乐呵呵的度过,几年后。几年后。有一天,老和尚带着二和尚...
    青小妤阅读 1,175评论 10 39
  • 雨如白练,却砸的杉树枝叶颤动,尤其是砸的周围的一切都是嘈杂不停。杉树脚下是一条坑坑洼洼的石子路,白练拂过坑洼处,揭...
    恍若光芒阅读 488评论 0 1
  • 成功并非通往快乐的钥匙,快乐是打开成功之门的钥匙。在事业或从事的任何一份工作中,要确保你付出的价值等同于你从获利或...
    安利女神谌宝连阅读 352评论 0 0
  • 文/金玲 职业社区群里,有朋友提问“我当过机械厂品管,目前工资4000多,我觉得太低,想辞职但又不知道去向哪里?”...
    金玲老师的生涯空间站阅读 951评论 1 2