进程——PV操作

       在多道程序设计中,由于多个进程可以并发执行,故进程间必然存在资源共享和相互合作的问题。


一、同步互斥


      进程通信是指各个进程交换信息的过程。


1、同步


     同步是合作进程间的直接制约问题。

     进程间的同步是指进程间完成一项任务时直接发生相互作用的关系。


      下面来讲一个搬运工的实例:



      甲从A仓库取出数据,运到中转站;

      乙从中转站取出数据,运到B仓库;

      乙取数据时,必须是甲完成了向中转站送数据的操作;

      否则,乙会停下来等待甲的操作完成完成。他们共同完成这一件事情,我们将它就叫做同步。

 

PS:计算机内,多个进程可以并发执行,每个进程都以各自独立、不可预知的速度前进推进,但是在临界区上,需要协调合作进程间的关系。


2、互斥


      互斥是申请临界资源进程间的间接制约问题。


      进程互斥是指系统中各进程互斥使用临界资源。

 

      例如:打印机、共享变量等临界资源。在多道程序系统环境中,多进程可以共享各类资源,但有些资源一次只能供一个进程使用。


二、信号量


      定义——一个整型变量,根据控制对象的不同被赋予不同的值。


      分类:公用信号量和私用信号量。

 

      公用信号量——实现进程间的互斥,初值为1或资源的数目。

      私用信号量——实现进程间的同步,初值为0或某个正整数。


      信号量的物理意义:


      S>=0,表示某资源的可用数;

      S<0,则其绝对值表示阻塞队列中等待该资源的进程数。

 

三、P操作


定义:

      S:=S-1

若S>=0,则执行P操作的进程继续执行;

若S<0,则置该进程为阻塞状态(因为无可以用资源),并将其插入阻塞队列。


操作过程:

   Procedure(Var S:Semaphore);

      Begin

          S:=S-1;

          if  S<0 thenW(S){

             执行P操作的进程插入等待队列

          }

      End;

 

Semphore表示所定义的变量是信号量。


四、V操作


定义:

      S:=S+1

若S>0,则执行V操作的进程继续执行;

若S<=0,则从阻塞状态唤醒一个进程,并将其插入就绪队列,然后执行V操作的进程继续执行。


操作过程:

Procedure V(Var S:Semaphore);

   Begin

      S:=S+1;

      IfS<=0 then R(S){

              从阻塞队列中唤醒一个进程

      }

   End;


PV操作实现进程的互斥:


信号量mutex的初值为1,当进入临界区时执行P操作;退出临界区时执行V操作:

P(mutex)

 临界区

V(mutex)


PS:PV操作实现进程同步互斥的过程中,P操作表示申请一个资源,V操作表示释放一个资源。


       难点:理解PV操作其实就跟了解一个人一样。现实中,大部分在大部分时候都是自私的,PV操作也是一样,总是站在自己的角度想问题。P操作的信号量,指的是缓冲区还有几个空格子可以盛放资源,而V操作的信号量指的是缓冲区有多少个资源,能够供自己使用。


五、例子


例子1——交通流量统计程序



例子2——生产者消费者


   生产者进程P1不断生产产品送入缓冲区,消费者进程P2不断从缓冲区取出产品消费。为了实现P1与p2进程间的同步问题,需要设置一个信号量s1,初值为1,表示缓冲区空,可以将产品送入缓冲区;设置另一个信号量s2,初值为0,表示缓冲区有产品。其同步过程如下:



例子3——生产者消费者

      上题中,如果S1的初始值为0,S2初始值不变(为0),其同步过程为:


 


例子4——2008年上半年例题

五、总结


      PV操作是操作系统只是里面比较重要的知识,掌握PV操作的重点,我认为是PV操作信号量的角度是站在两个完全相反的角度上的,理解了这一点,别的我们都可以据此推出。




  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值