操作系统学习笔记六:进程同步

本文深入探讨了并发环境中多个进程同时访问和操作共享数据所引发的竞争条件问题,特别是临界区问题。通过阐述临界区的概念、不同类型的内核模式(抢占与非抢占)及其在解决竞争条件中的作用,本文提供了理解和解决此类问题的指导。此外,还介绍了Perterson算法和硬件同步机制作为有效解决方案,旨在帮助系统设计者确保并发环境下的数据一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.背景

      多个进程并发访问和操作同一数据且执行结果与访问发生的特定顺序有关,称为竞争条件。

2.临界区问题

      假设某个系统有n个进程。每个进程有一个代码段称为临界区,在该区中进程可能改变共同变量、更新一个表、写一个文件等。这种系统不允许两个进程同时在临界区执行。临界区问题是设计一个以便进程协作的协议

      每个进程必须请求允许进入临界区,实现这一请求的代码称为进入区,临界区之后可有退出区,其余代码为剩余区

      while (true)

            {进入区

               临界区

                  退出区

                    剩余区          }

      如有进程需进入临界区,那么他是不在剩余区执行的进程。从一个进程请求进入临界区直至允许为止,其他进程允许进入临界区的次数有上限。

      系统可存在多个处于内核模式的活动进程,因此内核代码会出现竞争条件,如两个进程同时打开文件。内核开发者有必要保证系统不会产生竞争条件。

      抢占内核与非抢占内核可用于处理操作系统内的临界区问题。抢占与非抢占内核的区别在于是否允许处于内核模式的进程被抢占。处于内核模式进程会一直运行,直到退出内核模式、阻塞。显然非抢占式内核  不会导致竞争条件,因为只会有一个进程处于内核模式。    而抢占式内核需要更认真的设计。

3.Perterson算法

      该算法适用于两个进程在临界区与剩余区交替执行

4.硬件同步

      就任何临界区问题都需要一个简单工具——锁。一个进程进入临界区之前必须得到锁,退出临界区释放锁。

        while {true}

             {请求锁

                临界区

               释放锁

                 剩余区          }

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值