码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2018-10-01 11:58:46      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:进程   关闭   变量   cpu   进程间通讯   测试   用户   实现   临界区   

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,这样就同时有两个进程处于临界区中。

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

标签:进程   关闭   变量   cpu   进程间通讯   测试   用户   实现   临界区   

原文地址:https://www.cnblogs.com/liushuhe1990/p/9734317.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!