操作系统--P、V操作及前趋关系的实现

  一、P、V操作

        信号量可以理解为“资源数”,假定信号量为s

  P --> wait 操作                        ​​​​​​​        ​​​​​​​     

        wait(S){

                while(S<=0);                 /*S<=0表示资源不够,循环等待*/

                S--; }                                /*资源够,占用一个*/

V --> signal操作

        signal(S){

                  S++;  }                          /*资源使用结束后,释放*/

【P、V操作均为原子操作,在执行过程中不能被中断】

二、信号量实现前驱关系

  • 每一对前驱关系分别设置一个同步变量
  • 在“前面的操作”V(S)
  • 在“后面的操作”P(S)

    以课本的习题为例:

                ​​​​​​​这里的同步变量分别为a,b,c,d,e,f,g

部分代码框架如下:

p1()  {S1; signal(a); signal(b);}

p2() {wait(a); S2; signal(c); signal(d);}

...


版权声明:本文为weixin_52137034原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。