进程-PV操作

在多道程序系统中,进程是并发执行的,这些进程间存在不同的相互制约关系。

一、临界资源

  进程在运行过程中,一般会与其他的进程共享资源,而有些资源具有排他性。一次只能为一个进程所使用,通常把这种一次仅允许一个进程使用的资源称为临界资源(如:打印机、绘图机、一些进程间共享的变量、缓存区)。进程访问临界资源的那段代码称为临界区,也叫临界段。

  访问临界资源应遵循如下原则:

1、空闲让进(或有空即进):当进程处于临界区时,可以允许一个请求进出临界区的进程立即进出自己的临界区。

2、忙则等待(或无空则等):当已有进程进入临界区时,其他试图进入临界区的进程必须等待。

3、有限等待:对要求访问临界资源的进程,应保证能在有限的时间内进入自己的临界区。

4、让权等待:当进程不能进入自己的临界区时,应释放处理机。

二、同步互斥

1、同步

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

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

2、互斥

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

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

 

三、信号量

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

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

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

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

      3、 信号量的物理意义:

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

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

 

四、P操作

     1、定义:

       S:=S-1

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

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

     2、操作过程:

  Procedure P(Var S:Semaphore)

  {

    S--;

    if(S<0)

    {

            阻塞该进程;

      将该进程插入信号量S的等待队列;

       }

  }

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

 

五、V操作

     1、定义:

        S:=S+1

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

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

     2、操作过程:

       Procedure V(Var S:Semaphore)

   {

    S++;

    if(S <= 0)

    {

       从信号量的等待队列中取出队首进程;

      将其插入就绪队列;

      }

   }

 

 

 


 

转载于:https://www.cnblogs.com/chenshikun/p/7600518.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值