操作系统信号量和PV操作问题,求大神,不要复制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统信号量和PV操作问题,求大神,不要复制相关的知识,希望对你有一定的参考价值。

独木桥问题1:东西向汽车驶过独木桥,为了保证交通安全,只要桥上无车 ,则允许一方的汽车过桥,待其全部过完后,才允许另一方的汽车过桥。请用  信号量和PV操作写出汽车过独木桥问题的同步算法。
独木桥问题3:在独木桥问题1中,要求保证东西方向交替通过一辆汽车.试用信号量和PV操作写出汽车过独木桥问题的同步算法

只要独木桥问题3的答案!!!!!!!!!

参考技术A bridge=1,mutex1=1,mutex2=1,s1=1,s2=1
Process 东()
P(mutex2)
P(bridge)
过桥
s2=0
if(s1==0)
V(mutex1)
s1=1

V(bridge)

Process 西()
P(mutex1)
P(bridge)
过桥
s1=0
if(s2==0)
V(mutex2)
s2=1

V(bridge)

pv操作与信号量

  在python同步编程部分,需要分析和思考多个线程之间同步互斥问题,因此pv操作和信号量作为基础和重中之重,特此回顾pv操作和信号量。

  PV操作由P操作原语和V操作原语组成(原语即不可在分割的操作),对信号量(大部分是cpu等资源)进行操作,具体定义如下:

    P(S):

      ①将信号量S的值减1,即S=S-1;

      ②如果S>=0,则该进程继续执行;否则该进程置为等待状态。

    V(S):

      ①将信号量S的值加1,即S=S+1;

      ②该进程继续执行;如果该信号的等待队列中有等待进程就唤醒一等待进程。

p操作就是对s(信号量)进行操作,p操作占用一个资源(s=s-1),空闲信号量减一,此时s>=0说明刚才资源足以满足线程需求,线程运行,否则挂起。

v操作是线程完成之后释放资源,此时(s=s+1),此时空闲资源数量+1,若此时资源满足挂起队列线程需要,则新线程运行。

  

  关于PV操作的总结:

    1.在多线程编程中使用PV操作能忽略代码具体的实现细节,这样确保总体思路的正确性。

    2.分析PV操作时紧紧抓住同步和互斥;

       同步主要分析:谁在等待?等待什么?分析清楚了,同步就出来了;

       互斥主要分析:那些资源是共享的,共享资源需进一步思考有没有必要互斥,比如果盘问题中果盘是共享资源,但是果盘操作并不需要互斥;

以上是关于操作系统信号量和PV操作问题,求大神,不要复制的主要内容,如果未能解决你的问题,请参考以下文章

信号量和PV操作

pv操作与信号量

PV操作

进程相互作用之信号量PV操作及其代码实现

信号量与PV操作

信号量机制和PV操作