美文网首页
二.进程(5)信号量习题

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

作者: 麻皮阿洪 | 来源:发表于2018-09-30 12:52 被阅读0次

    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

    相关文章

      网友评论

          本文标题:二.进程(5)信号量习题

          本文链接:https://www.haomeiwen.com/subject/evhwoftx.html