zoukankan      html  css  js  c++  java
  • 7.进程同步之临界区问题

    生产者-消费者问题的一种解法


    原子操作(Atomic operation)要求该操作完整地一次性完成,不允许中间被打断

    Race Condition :The situation where several processes access and manipulate shared data concurrently(并发地).The final value of the shared data depends upon which process finished last;(谁最后完成)

    为了避免race conditions,并发进行必须同步


    临界区问题(The Critical-Section Problem)

    •   假设n个进程竞相访问共享数据的情形
    •   每个进程存在一段代码,称作为临界区,进程就是通过这段代码访问了共享          数据
    •   其他代码没有访问共享数据
    •   这n个进程中,至少存在1个以上的进程甚至修改了共享数据

    怎样确保当有一个进程i正在其自己的临界区执行时,没有其他任何进程j也在它的临界区中执行?


    临界区问题的解决方案必须满足3条件

      互斥条件(只能有有限个进程在临界区里面)

      空闲让进:

        if

          没有进程处于它的临界区 and 某些进程申请进入其临界区

        then

          只有那些不在remainder sections的进程,才能参与能否进入临界区的选举 and 这个选举不允许无限期(indefinitely)推迟(有限次进入                                临界区)

      有限等待 

        某一进程从其提出请求,至它获准进入临界区的这段时间里,其它进程进入他们的临界区的次数存在上界

          假设进程各自都在持续执行

          不考虑N个进程之间的相对执行速度


    Algorithm 1

    定义两进程共享数据

      int turn;

      并且取初值turn=0;

      turn=i;进程Pi可以进入临界区

      进程Pi

        do{

          while(trun!=i)

            critical section //等待

          turn=j;

            remainder.section //交还

    }while(1);  


     临界区问题的硬件指令解决方案

    思想就是,只有当lock为false时,才可以进去,否则就一直等待


  • 相关阅读:
    android29
    android28
    android27
    android26
    Dynamics CRM2011 MspInstallAction failed when installing an Update Rollup
    Dynamics CRM Import Solution Attribute Display Name description is null or empty
    The service cannot be activated because it does not support ASP.NET compatibility
    IIS部署WCF报 无法读取配置节“protocolMapping”,因为它缺少节声明
    Unable to access the IIS metabase.You do not have sufficient privilege
    LM算法与非线性最小二乘问题
  • 原文地址:https://www.cnblogs.com/xiaochi/p/8029087.html
Copyright © 2011-2022 走看看