OS 关于信号量处理中的忙等待问题

直接看图:

下面这张图堪称神奇:

问题描述–>套娃行为
在这里插入图片描述
信号量为了时临界区问题不发生忙等待,使用临界区mutex进行处理。临界区mutux的value需要被P1和P2的wait()指令进行操作,然而能否保证对mutex.value进行互斥的操作是一个问题。wait()操作理论上是需要原子的(atomically),实际上是有一些代码构成,实现起来并不能保证互斥。这就产生了mutex.value访问控制的问题。也就产生了CS1’和CS2‘。
保证互斥的算法有以下:
1、硬件指令 TestAndSet Swap 会发生忙等待
2、开关中断忙等待切只适用于单处理系统
3、paterson算法 面包店bakery算法等 也有忙等待
由此可见 ,信号量解决进程互斥的时候忙等待不可避免。

使用信号量的目的一个时因为方便简单,另一个就是能够解决忙等待问题

那么为什么使用信号量,是因为图中对用户进程P1和P2的共享数据S进行忙等待处理的效率比较低,而操作系统的临界区的忙等待的时间比较短,效率高。而且适当的忙等待并非无益(多处理机下,和进程的context上下文切换有关)。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值