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

面试题 相关文章推荐
Weblogic的布署方式
Aug 23 面试题
纬创Java面试题笔试题
Oct 02 面试题
请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
Jul 16 面试题
struct与class的区别
Feb 03 面试题
internal修饰符起什么作用
Dec 16 面试题
几个Linux面试题笔试题
Dec 01 面试题
Prototype如何更新局部页面
Mar 03 面试题
用Python写一个for循环的例子
Jul 19 面试题
同步和异步有何异同,在什么情况下分别使用他们
Apr 09 面试题
大唐面试试题(CPU,UNIX等等)
Jan 11 面试题
当文件系统受到破坏时,如何检查和修复系统?
Mar 09 面试题
德尔福集团DELPHI的笔试题
Feb 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学习笔记 面向对象的构造与析构方法
2011/06/13 PHP
解析php中session的实现原理以及大网站应用应注意的问题
2013/06/17 PHP
PHP_NETWORK_GETADDRESSES: GETADDRINFO FAILED问题解决办法
2014/05/04 PHP
JavaScript 参考教程
2006/12/29 Javascript
JavaScript控制两个列表框listbox左右交换数据的方法
2015/03/18 Javascript
jQuery获得包含margin的outerWidth和outerHeight的方法
2015/03/25 Javascript
nodejs创建web服务器之hello world程序
2015/08/20 NodeJs
jQuery实现彩带延伸效果的网页加载条loading动画
2015/10/29 Javascript
jquery判断当前浏览器的实现代码
2015/11/07 Javascript
论JavaScript模块化编程
2016/03/07 Javascript
BootStrap tooltip提示框使用小结
2016/10/26 Javascript
滚动条的监听与内容随着滚动条动态加载的实现
2017/02/08 Javascript
node.js连接MongoDB数据库的2种方法教程
2017/05/17 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
2017/08/24 Javascript
浅谈webpack打包生成的bundle.js文件过大的问题
2018/02/22 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
2018/03/21 Javascript
Vue如何实现响应式系统
2018/07/11 Javascript
Array数组对象中的forEach、map、filter及reduce详析
2018/08/02 Javascript
vue.js响应式原理解析与实现
2020/06/22 Javascript
ES6 Promise对象的含义和基本用法分析
2019/06/14 Javascript
使用zrender.js绘制体温单效果
2019/10/31 Javascript
js实现多个标题吸顶效果
2020/01/08 Javascript
js实现百度淘宝搜索功能
2020/02/17 Javascript
jquery实现抽奖功能
2020/10/22 jQuery
Python中的面向对象编程详解(上)
2015/04/13 Python
详解Python中的type()方法的使用
2015/05/21 Python
python 创建弹出式菜单的实现代码
2017/07/11 Python
python操作kafka实践的示例代码
2019/06/19 Python
pycharm2020.2 配置使用的方法详解
2020/09/16 Python
美国领先的眼镜和太阳镜在线零售商:Glasses.com
2019/08/26 全球购物
意大利奢侈品综合电商网站:MODES
2019/12/14 全球购物
旅游管理专业生自荐信范文
2014/01/02 职场文书
群众路线教育实践活动学习心得体会
2014/10/30 职场文书
大学生个人学年总结
2015/02/15 职场文书
2015年“我们的节日·重阳节”活动总结
2015/07/29 职场文书
python 遍历磁盘目录的三种方法
2021/04/02 Python