首页 > 系统服务 > 详细

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

时间:2018-10-01 11:37:00      阅读:180      评论:0      收藏:0      [点我收藏+]

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

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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!