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

面试题 相关文章推荐
下述程序的作用是计算机数组中的最大元素值及其下标
Nov 26 面试题
C++的几个面试题附答案
Aug 03 面试题
简述数组与指针的区别
Jan 02 面试题
WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?
Aug 25 面试题
如何利用find命令查找文件
Nov 18 面试题
介绍一下Make? 为什么使用make
Jul 31 面试题
海量信息软件测试笔试题
Aug 08 面试题
配置管理计划的主要内容有哪些
Jun 20 面试题
软件设计的目标是什么
Dec 04 面试题
Static Nested Class 和 Inner Class的不同
Nov 28 面试题
高级Java程序员面试题
Jun 23 面试题
shell的种类有哪些
Apr 15 面试题
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
收听短波不可能有声音清晰的品质吗
2021/03/01 无线电
php牛逼的面试题分享
2013/01/18 PHP
关于php操作mysql执行数据库查询的一些常用操作汇总
2013/06/24 PHP
IIS6.0中配置php服务全过程解析
2013/08/07 PHP
解读PHP中的垃圾回收机制
2015/08/10 PHP
PHP+Mysql+jQuery实现发布微博程序 php篇
2015/10/15 PHP
ThinkPHP实现分页功能
2017/04/28 PHP
基于编写jQuery的无缝滚动插件
2014/08/02 Javascript
js+csss实现的一个带复选框的下拉框
2014/09/29 Javascript
javascript中setTimeout使用指南
2015/07/26 Javascript
jQuery实现网页顶部固定导航效果代码
2015/12/24 Javascript
js简单判断移动端系统的方法
2016/02/25 Javascript
javascript中JSON.parse()与eval()解析json的区别
2016/05/19 Javascript
使用jquery提交form表单并自定义action的方法
2016/05/25 Javascript
js HTML5 Canvas绘制转盘抽奖
2020/09/13 Javascript
老生常谈Bootstrap媒体对象
2017/07/06 Javascript
webpack4实现不同的导出类型
2019/04/09 Javascript
vue使用screenfull插件实现全屏功能
2020/09/17 Javascript
Vue解决移动端弹窗滚动穿透问题
2020/12/15 Vue.js
[48:39]Ti4主赛事胜者组第一天 EG vs NEWBEE 2
2014/07/19 DOTA
Python利用带权重随机数解决抽奖和游戏爆装备问题
2016/06/16 Python
python实现关键词提取的示例讲解
2018/04/28 Python
Flask框架使用DBUtils模块连接数据库操作示例
2018/07/20 Python
Python实现字符串中某个字母的替代功能
2019/10/21 Python
Numpy将二维数组添加到空数组的实现
2019/12/05 Python
python kafka 多线程消费者&手动提交实例
2019/12/21 Python
Python ellipsis 的用法详解
2020/11/20 Python
HTML5中外部浏览器唤起微信分享功能的代码
2020/09/15 HTML / CSS
老师对学生的评语
2014/04/18 职场文书
暑假学习心得体会
2014/09/02 职场文书
中国合伙人观后感
2015/06/02 职场文书
沂蒙六姐妹观后感
2015/06/08 职场文书
开学随笔
2015/08/15 职场文书
2016大学生入党积极分子心得体会
2016/01/06 职场文书
Python超简单容易上手的画图工具库推荐
2021/05/10 Python
python中pymysql包操作数据库方法
2022/04/19 Python