进程间通讯,临界区,互斥
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,这样就同时有两个进程处于临界区中。
以上是关于进程间通讯,临界区,互斥的主要内容,如果未能解决你的问题,请参考以下文章