计算机体系结构——锁和互斥

并行通常使编程变得复杂,程序员必须防止一个并行活动与其他并行活动相冲突。在多个处理器的系统中,如果一个变量被多个处理器使用,则会出现各自独立运行,并竞争访问内存的情况。这种情况有时会使得程序的最终结果出现错误,因此防止多个处理器共同并行的情况。

因此,引入了多处理器硬件的硬件锁,程序员需要将锁与每个共享项相关联,并使用锁确保在数据项更新的过程中没有其它处理器可以更改。互斥是指处理器必须取得对数据项的独占使用之后才能对其进行更新。因此,如果两个或多个处理器同时试图获得特定的锁,则其中一个处理器获得访问权(即继续执行),而其他处理器会被阻塞。即,硬件确保在任何时候都只能由至多一个处理器持有给定的锁。

当然,使用锁在带来安全执行并行的好处的同时,也带来一些不好的影响:

缺点介绍
增加程序员的工作不习惯为多处理器编程的程序员很容易忘记锁定共享变量,并且由于不受锁保护的访问可能不是都会导致错误,所有程序的问题会更难以检测。
加锁严重降低性能如果K个处理器试图同时访问共享变量,那么硬件会使K-1个处理器保持空闲以等待访问。
增加开销由于需要使用单独的指令来获取和释放锁,加锁使得开销增加。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值