介绍一下Linux内核的排队自旋锁


Posted in 面试题 onAugust 27, 2014
排队自旋锁(FIFO Ticket Spinlock)是 Linux 内核 2.6.25 版本引入的一种新型自旋锁,它通过保存执行线程申请锁的顺序信息解决了传统自旋锁的“不公平”问题。排队自旋锁的代码由 Linux 内核开发者 Nick Piggin 实现,目前只针对 x86 体系结构(包括 IA32 和 x86_64),相信很快就会被移植到其它平台。

自旋锁(Spinlock)是在Linux 内核中广泛运用的底层同步机制。它是一种工作于多处理器环境的特殊的锁,在单处理环境中自旋锁的操作被替换为空操作。当某个处理器上的内核执行线程申请自旋锁时,如果锁可用,则获得锁,然后执行临界区操作,最后释放锁;如果锁已被占用,线程并不会转入睡眠状态,而是忙等待该锁,一旦锁被释放,则第一个感知此信息的线程将获得锁。

传统的自旋锁本质上用一个整数来表示,值为1代表锁未被占用。这种无序竞争导致执行线程无法保证何时能取到锁,某些线程可能需要等待很长时间。随着计算机处理器个数的不断增长,这种“不公平”问题将会日益严重。

Tags in this post...

面试题 相关文章推荐
如何用PHP实现邮件发送
Dec 26 面试题
Yahoo-PHP面试题4
May 05 面试题
你常见到的runtime exception
Sep 05 面试题
C语言笔试题
Sep 04 面试题
如何在发生故障的节点上重新安装 SQL Server
Mar 14 面试题
南京软件公司的.net程序员笔试题
Aug 31 面试题
什么是.net的Remoting技术
Jul 08 面试题
如何在.net Winform里面显示PDF文档
Sep 11 面试题
What is EJB
Jul 22 面试题
用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别
Nov 04 面试题
Java中的类包括什么内容?设计时要注意哪些方面
May 23 面试题
Java面试题冲刺第十六天--消息队列
Aug 07 面试题
Windows和Linux动态库应用异同
Jul 28 #面试题
linux面试题参考答案(9)
Jan 29 #面试题
linux面试题参考答案(8)
Aug 11 #面试题
linux面试题参考答案(7)
Jul 24 #面试题
linux面试题参考答案(6)
Aug 29 #面试题
linux面试题参考答案(5)
Sep 01 #面试题
linux面试题参考答案(4)
Jan 28 #面试题
You might like
PHP日期时间函数的高级应用技巧
2009/05/16 PHP
php 处理上百万条的数据库如何提高处理查询速度
2010/02/08 PHP
php的POSIX 函数以及进程测试的深入分析
2013/06/03 PHP
php mysql操作mysql_connect连接数据库实例详解
2016/12/26 PHP
对php 判断http还是https,以及获得当前url的方法详解
2019/01/15 PHP
Javascript 个人笔记(没有整理,很乱)
2007/07/07 Javascript
JavaScript 直接操作本地文件的实现代码
2009/12/01 Javascript
js加入收藏夹代码(兼容ie/ff/op)
2014/05/16 Javascript
JavaScript获得url所有参数键值表的方法
2015/03/21 Javascript
js事件监听器用法实例详解
2015/06/01 Javascript
JS模拟Dialog弹出浮动框效果代码
2015/10/16 Javascript
jquery判断iPhone、Android设备类型
2016/09/14 Javascript
微信小程序 Record API详解及实例代码
2016/09/30 Javascript
送你43道JS面试题(收藏)
2019/06/17 Javascript
javascript实现前端成语点击验证优化
2020/06/24 Javascript
[04:04]DOTA2亚洲邀请赛比赛场馆&酒店全攻略
2017/03/23 DOTA
[01:04:08]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第一场 12.16
2020/12/18 DOTA
python从网络读取图片并直接进行处理的方法
2015/05/22 Python
Python格式化输出%s和%d
2018/05/07 Python
Python清空文件并替换内容的实例
2018/10/22 Python
深入理解Python异常处理的哲学
2019/02/01 Python
python 的 openpyxl模块 读取 Excel文件的方法
2019/09/09 Python
TensorFlow使用Graph的基本操作的实现
2020/04/22 Python
Pycharm常用快捷键总结及配置方法
2020/11/14 Python
移动web模拟客户端实现多方框输入密码效果【附代码】
2016/03/25 HTML / CSS
List, Set, Map是否继承自Collection接口?
2016/05/16 面试题
EJB的激活机制
2013/10/25 面试题
Java面试题:说出如下代码的执行结果
2015/10/30 面试题
好听的队名和口号
2014/06/09 职场文书
孝敬父母的活动方案
2014/08/28 职场文书
2014年民主评议党员个人总结
2014/09/24 职场文书
工作失职检讨书(精华篇)
2014/10/15 职场文书
千与千寻观后感
2015/06/04 职场文书
未婚证明范本
2015/06/15 职场文书
2016寒假社会实践心得体会范文
2015/10/09 职场文书
小学教代会开幕词
2016/03/04 职场文书