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

面试题 相关文章推荐
文件中有一组整数,要求排序后输出到另一个文件中
Jan 04 面试题
广州地球村科技数据库题目
Apr 25 面试题
Oracle快照(snapshot)
Mar 13 面试题
什么是触发器(trigger)? 触发器有什么作用?
Sep 18 面试题
SQL里面IN比较快还是EXISTS比较快
Jul 19 面试题
.NET remoting中对象激活的两种方式
Jun 08 面试题
Linux常见面试题
Mar 18 面试题
软件测试有哪些?什么是配置项?
Feb 12 面试题
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
Mar 23 面试题
线程问题:wait()方法是定义在哪个类里面
Jul 07 面试题
静态变量和实例变量的区别
Jul 07 面试题
送给程序员的20个Java集合面试问题
Aug 06 面试题
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运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
ThinkPHP中Widget扩展的两种写法及调用方法详解
2017/05/04 PHP
PHP中__set()实例用法和基础讲解
2019/07/23 PHP
线路分流自动跳转代码;希望对大家有用!
2006/12/02 Javascript
替代window.event.srcElement效果的可兼容性的函数
2009/12/18 Javascript
js中的scroll和offset 使用比较的实例与分析
2013/09/29 Javascript
extjs_02_grid显示本地数据、显示跨域数据
2014/06/23 Javascript
js实现字符串转日期格式的方法
2015/05/20 Javascript
实例详解jQuery Mockjax 插件模拟 Ajax 请求
2016/01/12 Javascript
javascript cookie的简单应用
2016/02/24 Javascript
原生js的RSA和AES加密解密算法
2016/10/08 Javascript
在Vue.js中使用Mixins的方法
2017/09/12 Javascript
zTree节点文字过多的处理方法
2017/11/24 Javascript
解决vue单页使用keep-alive页面返回不刷新的问题
2018/03/13 Javascript
vue的diff算法知识点总结
2018/03/29 Javascript
30分钟精通React今年最劲爆的新特性——React Hooks
2019/03/11 Javascript
bootstrap Table实现合并相同行
2019/07/19 Javascript
node.js 微信开发之定时获取access_token
2020/02/07 Javascript
微信小程序用户盒子、宫格列表的实现
2020/07/01 Javascript
[09:31]2016国际邀请赛中国区预选赛Yao赛后采访 答题送礼
2016/06/27 DOTA
python encode和decode的妙用
2009/09/02 Python
Python访问MySQL封装的常用类实例
2014/11/11 Python
简单介绍Ruby中的CGI编程
2015/04/10 Python
用Python的Django框架来制作一个RSS阅读器
2015/07/22 Python
Python文件夹与文件的相关操作(推荐)
2016/07/25 Python
Python使用PyCrypto实现AES加密功能示例
2017/05/22 Python
Python中%是什么意思?python中百分号如何使用?
2018/03/20 Python
对Python中for复合语句的使用示例讲解
2018/11/01 Python
python统计字符串中字母出现次数代码实例
2020/03/02 Python
Wiggle美国:英国骑行、跑步、游泳、铁人三项商店
2018/10/27 全球购物
写好自荐信需做到的5要点
2014/03/07 职场文书
三月法制宣传月活动总结
2014/07/03 职场文书
中学生旷课检讨书500字
2014/10/29 职场文书
2014年技术部工作总结
2014/12/12 职场文书
初中生入团申请书范文(五篇)
2019/10/16 职场文书
Vue实现tab导航栏并支持左右滑动功能
2021/06/28 Vue.js