浅谈操作系统底层锁的实现
2018-06-18 02:21:23来源:未知 阅读 ()
在写代码时经常会使用到锁,很多的锁是需要操作系统支持的,系统层面的锁是如何实现的呢?
其实系统的锁实现和平时我们自己实现锁的过程是一样的:
1.读取锁标志位read lock 2.判断标志位锁状态lock status 3.上锁(如果已经上锁则返回失败) 4.返回成功 5.执行程序 6.释放锁
但是这个过程不得不考虑的是当有两个线程同时拿到标志位都是0怎么办,很简单,直接把1,2,3作为一个原子操作就行了,也就是操作系统层面的关闭中断来保证123是一个原子操作。这样的话就不会有两个线程同时get lock了,但是问题又来了这是在单核上没有问题,可是现在计算机都是多核该如何处理呢,这就涉及到计算机的硬件总线支持了。
总线
总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束, 按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。总线是一种内部结构,它是cpu、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路再与总线相连接,从而形成了计算机硬件系统。在计算机系统中,各个部件之间传送信息的公共通路叫总线,微型计算机是以总线结构来连接各个功能部件的。(以上摘抄百度)
多核计算机上提供了锁总线的支持来实现锁,然后再配合关闭中断的原子操作就能保证锁的正确性了。
最后,由于计算机的硬件机制和OS的配合就能实现锁,基于锁就可以实现各种各样的同步功能了。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:OO面向对象课程作业1-3总结
- 我再也不怕面试被问 Redis 排行榜底层轮子了 2020-05-21
- 后端程序员就靠它吃饭了,推荐一份夯实基础的操作系统书单! 2020-05-16
- 后端程序员就靠它吃饭了,推荐一份夯实基础的操作系统书单! 2020-05-15
- 二面阿里惨败,怎么全是Java底层原理的问题·&# 2020-05-14
- 你说自己5年经验,却不知道synchronized关键字的底层原理? 2020-05-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash