操作系统概念——第6章 进程同步

1. 背景

共享数据的并发访问可能会产生数据的不一致

(1)生产者-消费者模型

在有限缓存的共享内存解决方案中,增加整数变量counter,并初始化为0.每当缓冲区增加一项时,counter递增。每当缓冲区减少一项时,counter递减
在这里插入图片描述
当并发执行生产者和消费者进程时,counter值可能为4、5、6.
理解
在这里插入图片描述
并发执行couter++和couter–相当于按任意顺序交替执行上面表示的低级语句

(2)竞争条件
定义
多个进程并发访问同一数据执行结果与访问发生的特定顺序有关
解决
避免竞争条件,确保一段时间只有一个进程能操作共享数据。为了实现这种保证,要求一定形式的进程同步。

2. 临界区问题

定义
每个进程有一个代码段称为临界区(critical section)
特点
① 每个进程必须请求进入其临界区
② 当一个进程在临界区内执行,没有其他进程可被允许进入其临界区
结构
在这里插入图片描述
(1)三项条件
互斥
当进程在其临界区内执行,其他进程都不能在其临界区内执行
有空让进
没有进程在临界区内执行时,允许不在剩余区内执行的进程在临界区内执行
有限等待
从一个进程请求进入临界区,到请求被允许为止,其他进程允许进入其临界区的次数有限

可能导致竞争条件的内核数据结构
① 维护内存分配
② 维护进程列表
③ 处理中断处理程序的数据结构

(2)处理操作系统临界区问题的两种方式
(1)非抢占内核
定义:处于内核模式的进程会一直执行,直到它退出内核模式、阻塞或退出CPU的控制
优点: 从根本上避免了竞争条件,因为某个时刻只有一个进程运行在内核模式下。
(2)抢占内核
定义:允许处于内核模式的进程被抢占
优点:① 更适合实时编程 ② 响应更快

3. Peterson算法

Peterson算法是一个经典的基于软件的临界区问题的解答。由于现代计算机体系架构执行基本机器语言指令(编译器、处理器会进行指令重排,导致算法出错),Peterson算法在这类机器上不能确保正确运行。
理解: Peterson是基于程序指令顺序执行的算法

Peterson适用于两个进程在临界区与剩余区间交替执行。
turn表示那个进程可以进入临界区(0 or 1),数组flag[2]表示那个进程请求进入临界区
在这里插入图片描述
互斥性: P 0 , P 1 P_0,P_1 P0,P1不可能同时进入while语句,因为turn只能为0或1不能为两个值
有空让进:
P i P_i

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冠long馨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值