摘要:本文主要向大家介绍了JAVA语言之浅谈操作系统底层锁的实现,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
本文主要向大家介绍了JAVA语言之浅谈操作系统底层锁的实现,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
在写代码时经常会使用到锁,很多的锁是需要操作系统支持的,系统层面的锁是如何实现的呢?
其实系统的锁实现和平时我们自己实现锁的过程是一样的:
1.读取锁标志位read lock
2.判断标志位锁状态lock status
3.上锁(如果已经上锁则返回失败)
4.返回成功
5.执行程序
6.释放锁
但是这个过程不得不考虑的是当有两个线程同时拿到标志位都是0怎么办,很简单,直接把1,2,3作为一个原子操作就行了,也就是操作系统层面的关闭中断来保证123是一个原子操作。这样的话就不会有两个线程同时get lock了,但是问题又来了这是在单核上没有问题,可是现在计算机都是多核该如何处理呢,这就涉及到计算机的硬件总线支持了。
总线
总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束, 按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。总线是一种内部结构,它是cpu、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。在计算机系统中,各个部件之间传送信息的公共通路叫总线,微型计算机是以总线结构来连接各个功能部件的。(以上摘抄百度)
多核计算机上提供了锁总线的支持来实现锁,然后再配合关闭中断的原子操作就能保证锁的正确性了。
最后,由于计算机的硬件机制和OS的配合就能实现锁,基于锁就可以实现各种各样的同步功能了。
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号