4、进程同步:共享变量与信号量的应用

进程同步:共享变量与信号量的应用

1. 共享变量同步

1.1 基本原理

共享变量同步是一种为进程间提供同步的基础方法。它仅依靠共享变量来实现同步,无需特殊的语言机制。其核心在于,进程通过设置和测试共享变量来表明自身状态。若一个进程发现另一个进程的状态会阻碍其继续执行,它会进入忙等待状态,即通过循环不断测试状态是否改变。

1.2 临界区问题

临界区问题涉及 N 个进程,每个进程重复执行包含临界区和非临界区的代码。临界区中,进程可能会更新共享变量、使用打印机或写入文件等,这些操作需要独占共享资源;非临界区则不访问任何共享资源。

一个典型的临界区问题解决方案的通用形式如下:
- 每个进程执行 S 个会话。
- 每个会话包含非临界区代码和临界区代码。
- 临界区代码前有获取访问权限的入口协议,后有释放访问权限的出口协议。

为使示例更具体,代码中引入了共享变量 x,临界区代码仅将 x 加 3。由于无控制地访问 x 可能导致竞态条件,因此对 x 的访问需在临界区内进行“保护”。

临界区问题的解决方案应具备以下特性:
|特性|描述|
|----|----|
|CS1:互斥性|任何时候,最多只有一个进程在其临界区内执行。|
|CS2:无活锁|若有两个或更多进程试图进入其临界区,其中一个将成功。|
|CS3:无不必要延迟|试图进入临界区的进程仅会被正在执行临界区的其他进程或也在尝试进入临界区的进程阻止。|
|CS4:最终进入|试图进入临界区的进程最终将被允许进入。|

1.3 错误解决方案

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值