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


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

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

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

Tags in this post...

面试题 相关文章推荐
SQL中where和having的区别
Jun 17 面试题
为什么会有内存对齐
Oct 10 面试题
请编程遍历页面上所有 TextBox 控件并给它赋值为 string.Empty
Dec 03 面试题
C#面试问题
Jul 29 面试题
linux系统都有哪些运行级别
Mar 26 面试题
sort命令的作用和用法
Aug 25 面试题
软件测试工程师笔试题带答案
Mar 27 面试题
提高EJB性能都有哪些技巧
Mar 25 面试题
如何提高MySql的安全性
Jun 19 面试题
如何清空Session
Feb 23 面试题
JSF的标签库有哪些
Apr 27 面试题
J2EE中的容器都包括哪些
Aug 21 面试题
Windows和Linux动态库应用异同
Apr 17 #面试题
linux面试题参考答案(9)
Jan 07 #面试题
linux面试题参考答案(8)
Apr 19 #面试题
linux面试题参考答案(7)
Oct 29 #面试题
linux面试题参考答案(6)
Jun 23 #面试题
linux面试题参考答案(5)
Nov 05 #面试题
linux面试题参考答案(4)
Sep 21 #面试题
You might like
手把手教你打印出PDF(关于fpdf的简单应用)
2013/06/25 PHP
PHP使用递归生成文章树
2015/04/21 PHP
PHP中SSO Cookie登录分析和实现
2015/11/06 PHP
Laravel重写用户登录简单示例
2016/10/08 PHP
PHP中命名空间的使用例子
2019/03/22 PHP
JavaScript中几种常见排序算法小结
2011/02/22 Javascript
jQuery News Ticker 基于jQuery的即时新闻行情展示插件
2011/11/05 Javascript
IE的有条件注释判定IE版本详解(附实例代码)
2012/01/04 Javascript
javascript scrollTop正解使用方法
2013/11/14 Javascript
从零学JS之你需要了解的几本书
2014/05/19 Javascript
JavaScript动态修改弹出窗口大小的方法
2015/04/06 Javascript
jquery实现滑动特效代码
2015/08/10 Javascript
最简单的JavaScript图片轮播代码(两种方法)
2015/12/18 Javascript
文件上传插件SWFUpload的使用指南
2016/11/29 Javascript
js 获取html5的data属性实现方法
2017/07/28 Javascript
vue中实现滚动加载更多的示例
2017/11/08 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
2018/01/25 Javascript
layui文件上传控件带更改后数据传值的方法
2019/09/23 Javascript
vue解决使用$http获取数据时报错的问题
2019/10/30 Javascript
稍微学一下Vue的数据响应式(Vue2及Vue3区别)
2019/11/21 Javascript
python抓取网页中链接的静态图片
2018/01/29 Python
使用python serial 获取所有的串口名称的实例
2019/07/02 Python
python虚拟环境完美部署教程
2019/08/06 Python
使用Python+selenium实现第一个自动化测试脚本
2020/03/17 Python
Python Selenium异常处理的实例分析
2021/02/28 Python
德国大型的家具商店:Pharao24.de
2016/10/02 全球购物
加拿大在线隐形眼镜专家:PerfectLens.ca
2016/11/19 全球购物
德国网上药房:Apotal
2017/04/04 全球购物
UNDONE手表官网:世界领先的定制手表品牌
2018/11/13 全球购物
用Python写一个for循环的例子
2016/07/19 面试题
幼儿园大班开学寄语
2014/08/02 职场文书
2015年清明节活动总结
2015/02/09 职场文书
贫困生证明范文
2015/06/16 职场文书
2016年“我们的节日·中秋节”活动总结
2016/04/05 职场文书
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
2021/06/07 Python
KVM基础命令详解
2022/04/30 Servers