介绍一下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...

面试题 相关文章推荐
10条PHP编程习惯
May 26 面试题
PHP如何与mysql建立链接
May 05 面试题
PHP高级工程师面试问题推荐
Jan 18 面试题
请说出几个常用的异常类
Jan 08 面试题
SQL Server面试题
Oct 17 面试题
SQL Server里面什么样的视图才能创建索引
Apr 17 面试题
介绍一下.net和Java的特点和区别
Sep 26 面试题
什么是网络协议
Apr 07 面试题
C#如何调用Word并打开一个Word文档
May 08 面试题
Python里面search()和match()的区别
Sep 21 面试题
如何提高MySql的安全性
Jun 19 面试题
Weblogic和WebSphere不同特点
May 09 面试题
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
php使用str_replace实现输入框回车替换br的方法
2014/11/24 PHP
php实现将wav文件转换成图像文件并在页面中显示的方法
2015/04/21 PHP
PHP中phar包的使用教程
2017/06/14 PHP
JavaScript入门学习书籍推荐
2008/06/12 Javascript
jQuery 解析xml文件
2009/08/09 Javascript
预加载css或javascript的js代码
2010/04/23 Javascript
js 判断一个元素是否在页面中存在
2012/12/27 Javascript
js实现鼠标触发图片抖动效果的方法
2015/02/27 Javascript
jquery.serialize() 函数语法及简单实例
2016/07/08 Javascript
BootstrapTable refresh 方法使用实例简单介绍
2017/02/20 Javascript
微信小程序 实现点击添加移除class
2017/06/12 Javascript
Angular简单验证功能示例
2017/12/22 Javascript
jQuery实现标签子元素的添加和赋值方法
2018/02/24 jQuery
layui自定义插件citySelect实现省市区三级联动选择
2019/07/26 Javascript
JS实现的定时器展示简单秒表、页面弹框及跳转操作完整示例
2020/01/26 Javascript
js实现前端界面导航栏下拉列表
2020/08/27 Javascript
[03:37]2015国际邀请赛第四日现场精彩集锦
2015/08/08 DOTA
Python的Tornado框架异步编程入门实例
2015/04/24 Python
Python实现八大排序算法
2016/08/13 Python
视觉直观感受若干常用排序算法
2017/04/13 Python
详解Python pygame安装过程笔记
2017/06/05 Python
Python爬虫实例爬取网站搞笑段子
2017/11/08 Python
浅谈python脚本设置运行参数的方法
2018/12/03 Python
python redis 删除key脚本的实例
2019/02/19 Python
利用PyCharm Profile分析异步爬虫效率详解
2019/05/08 Python
Pytorch加载部分预训练模型的参数实例
2019/08/18 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
2019/08/21 Python
如何在 Django 模板中输出 "{{"
2020/01/24 Python
Html5 Canvas动画基础碰撞检测的实现
2018/12/06 HTML / CSS
NBA德国官方网上商店:NBA Store德国
2018/04/13 全球购物
创业资金计划书
2014/02/06 职场文书
《十六年前的回忆》教学反思
2014/02/14 职场文书
弘扬焦裕禄精神走群众路线思想汇报
2014/09/12 职场文书
工作业绩不及格检讨书
2014/10/28 职场文书
工程质检员岗位职责
2015/04/08 职场文书
火烧圆明园观后感
2015/06/03 职场文书