操作系统--初探如何实现锁机制

 

目录

前言

关中断

硬件提供的原语

test-and-set

compare-and-swap

fetch-and-add

后言


前言

  锁对于我来说是一个很难理解的机制,因为底层知识了解不够。只是在Java层面用过其提供的synchronized关键字还有reentrantlock。弱点专攻,所以我专门找了书籍去看了这方面的知识,由于本人能力有限,所以以下言论有错还请各位指出。

关中断

  用过锁的同学都知道,锁可以同步一段临界区(访问共享资源的代码段)。而同步如果不要管它的效果的话,最简单的理解就是:A在执行的时候,不允许任何线程抢过cpu,不管你是时钟中断,还是其他什么中断。那好,现在我们知道中断可以打断线程的执行。嗯?是不是想到什么了,我在A执行阶段关中断不就可以实现“锁”了么?答案是正确的(最早的互斥量的解决方案之一就是临界区关中断),但是下面的缺点可能让你打消这个念头!

临界区关中断实现互斥量优缺点

优点:

  1. 这个方法的好处就是简单。你当然不用想破了脑子去弄明白为什么这方法是可行的。没有了中断,线程就可以保证它执行的代码确实会执行,并且不会有其他线程会干扰它。

缺点:

  1. 这个方法要求我们允许任何调用线程取执行特权操作(即中断的开和关),而且还要信
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值