同步互斥

Posted kk_kk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了同步互斥相关的知识,希望对你有一定的参考价值。

1.原子操作

2.临界区概述

  临界区:进程中访问临界资源的一段需要互斥执行的代码。

  进入区:检查可否进入临界区的一段代码,如可进入,设置相应“正在访问临界区”标志。

  退出区:清除“正在访问临界区”标志。

3.临界区访问规则

  空闲则入:没有进程在临界区时,任何进程可进入。

  忙则等待:有进程在临界区时,其他进程均不能进入临界区。

  有限等待:等待进入临界区的进程不能无限期等待。

  让权等待(可选):不能进入临界区的进程,应释放CPU(如转换到阻塞状态)。 

4.临界区的实现方法:

 不同的临界区实现机制的比较,根据其性能(并发级别)来衡量。

 1)禁用中断:

  进入临界区时,禁止所有中断。退出临界区时,使能所有中断。这样没有并发,进程可以独享资源。

    

    

2)基于软件的实现方法:

  用相应的算法实现。需要两个进程间的共享数据项,比较复杂,而且是忙等待。

    算法中,turn指轮到某个进程进入临界区,flag[i]指i进程想进入临界区,只有当turn == i 且flag[i]为true 同时成立时,才会进入临界区。

    

    

    

 3)更高级的抽象方法

 硬件提供了一些同步原语,如中断禁用,原子操作指令等,操作系统利用这些同步原语来构建更高级的编程抽象来简化进程同步,如锁,信号量等。

   原子操作指令:

    

    

   

    

    

  4)三种方式的比较

    

    

 

以上是关于同步互斥的主要内容,如果未能解决你的问题,请参考以下文章

线程同步与互斥详解

什么是进程的互斥与同步?如何实现进程的互斥和同步

线程同步和互斥的区别

10、同步互斥机制3(进程通信)(操作系统笔记)

同步和互斥

Linux 线程同步都有哪些方法?