码迷,mamicode.com
首页 > 系统相关 > 详细

进程-PV操作

时间:2017-09-27 11:42:29      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:问题   操作   允许   var   变量   分类   不同的   str   请求   

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

一、临界资源

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

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

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(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)

    {

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

      将其插入就绪队列;

      }

   }

 

 

 


 

进程-PV操作

标签:问题   操作   允许   var   变量   分类   不同的   str   请求   

原文地址:http://www.cnblogs.com/chenshikun/p/7600518.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!