临界区和缩

锁机制:

  基本原理:

    1.设置一个标志S:

      表明临界资源,“可有” 还是 “不可用”

    2.进入临界区之前检查标志是否“可用”:

      如为不可用:进程在临界区之外等待

      如为可用:

        访问临界资源

        将标志修改为可用

    3.退出临界区的时候标志修改为可用

上锁操作: //通过原语实现

  1.检测锁的状态

  2.如果S为0就回到第一步

  3.如果S=1,则设置为0

    LOCK(S)

    {

      test:if(s==0)

        goto test: //回到测试锁标志

         else  //s==1

          {

            S=0;

          }

     }

开锁操作://使用原语来实现

  1.

    把锁状态变成1

    Unlock(S)

    {

     S=1

    }

使用锁机制来访问临界区:

  1.初始化锁的状态 S=1

  2.进入临界区之前执行上锁LOCK

  3.离开临界区之后执行开锁Unlock操作

猜你喜欢

转载自www.cnblogs.com/beautiful7/p/12551931.html