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

面试题 相关文章推荐
PHP解析URL是哪个函数?怎么用?
May 09 面试题
Weblogc domain问题
Jan 27 面试题
What is the purpose of Void class? Void类的作用是什么?
Oct 31 面试题
Ibatis如何调用存储过程
May 15 面试题
包装类的功能、种类、常用方法
Jan 27 面试题
C语言笔试集
Jul 24 面试题
是否有自动比较结构的方法
Jun 03 面试题
铭万公司.net面试题笔试题
Jul 20 面试题
.NET remoting的两种通道是什么
May 31 面试题
上海期货面试题
Jan 31 面试题
sealed修饰符是干什么的
Oct 23 面试题
一些Solaris面试题
Dec 22 面试题
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中去掉字符串首尾空格的方法
2012/05/19 PHP
PHP调用Linux的命令行执行文件压缩命令
2013/01/27 PHP
解析php中curl_multi的应用
2013/07/17 PHP
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
xml和web特殊字符
2009/04/28 Javascript
Extjs列表详细信息窗口新建后自动加载解决方法
2010/04/02 Javascript
JQuery中$.ajax()方法参数详解及应用
2013/12/12 Javascript
jquery 获取 outerHtml 包含当前节点本身的代码
2014/10/30 Javascript
使用jquery组件qrcode生成二维码及应用指南
2015/02/22 Javascript
js计算德州扑克牌面值的方法
2015/03/04 Javascript
JavaScript框架是什么?怎样才能叫做框架?
2015/07/01 Javascript
JavaScript如何实现跨域请求
2016/08/05 Javascript
Ajax使用原生态JS验证用户名是否存在
2020/05/26 Javascript
vue组件与复用详解
2018/04/08 Javascript
checkbox在vue中的用法小结
2018/11/13 Javascript
vue实现评论列表功能
2019/10/25 Javascript
Vue3配置axios跨域实现过程解析
2020/11/25 Vue.js
js实现复制粘贴的两种方法
2020/12/04 Javascript
python网络编程学习笔记(三):socket网络服务器
2014/06/09 Python
Python编写生成验证码的脚本的教程
2015/05/04 Python
在Python中操作文件之seek()方法的使用教程
2015/05/24 Python
Python实现堆排序的方法详解
2016/05/03 Python
Python3安装Pymongo详细步骤
2017/05/26 Python
python 生成器协程运算实例
2017/09/04 Python
django-rest-swagger对API接口注释的方法
2019/08/29 Python
PIP和conda 更换国内安装源的方法步骤
2020/09/21 Python
scrapy处理python爬虫调度详解
2020/11/23 Python
TUMI香港官网:国际领先的行李箱、背囊品牌
2021/03/01 全球购物
EJB与JAVA BEAN的区别
2016/08/29 面试题
口腔工艺技术专业毕业生自荐信
2013/09/27 职场文书
高校毕业生登记表自我鉴定
2013/11/03 职场文书
机电一体化求职信
2014/03/10 职场文书
师德师风承诺书
2014/05/23 职场文书
5s标语大全
2014/06/23 职场文书
2015年学校体育工作总结
2015/04/22 职场文书
2016年全国助残日活动总结
2016/04/01 职场文书