进程间通讯,临界区,互斥

Posted liushuhe1990

tags:

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

1、临界区:把对共享内存进行访问的程序前段称为临界区

避免竞争,需要满足4个条件

1、任何两个进程不能同时处于临界区

2、不应对cpu的速度和数目做任何假设

3、临界区外的进程不得阻塞其它进程

4、不得在临界区外无休止的等待

实现互斥的方案:

1、关闭中断

     每个进程在进去临界区时先关闭中断,在离开之前再打开中断。中断被关闭后,时钟中断也被屏蔽。cpu只有在发生时钟婚      其它中断时才会进行进程切换,因此关中断将不会发生进程调度,也就避免了竞争。

1.1、缺点,把关中断的权力交给用户进程是危险的

       a、如果用户进程关闭中断,不在打开中断,系统将因此终止

       b、在多核cpu中,关中断仅对当前cpu有效,其它cpu仍然可以访问共享内存

2、锁变量

     设置一个共享锁变量,初值为0,当一个进程想进入临界区时,首先测试这把锁,如果锁值为0,则进程将其置为1,并进去临界区。若锁已经为1,则进程一直等待值变为0。

2.1、缺点:如果一个进程读取锁值为0,恰好在将它设置为1之前发生了调度,另外一个进程也做同样事情,并把锁值置为1。当第一个程序再次被调度时,也同样将锁值置为1,这样就同时有两个进程处于临界区中。

以上是关于进程间通讯,临界区,互斥的主要内容,如果未能解决你的问题,请参考以下文章

进程间的mutex

进程通信+线程同步

临界区与互斥量区别

进程/线程同步的方式和机制,进程间通信

第三十六天 守护进程 互斥锁 进程间通讯

从溯源角度看:进程间互斥