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

面试题 相关文章推荐
垃圾回收的优点和原理。并考虑2种回收机制
Oct 16 面试题
Java和Javasciprt的区别
Sep 02 面试题
接口中的方法可以是abstract的吗
Jul 23 面试题
请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
Jul 16 面试题
链表面试题-一个链表的结点结构
May 04 面试题
一套SQL笔试题
Aug 14 面试题
一些.net面试题
Oct 06 面试题
.net软件工程师应聘上机试题
Mar 10 面试题
傲盾软件面试题
Aug 17 面试题
什么是静态路由,其特点是什么?什么是动态路由,其特点是什么?
Jul 26 面试题
C#公司笔试题
Mar 28 面试题
ShellScript面试题一则-ShellScript编程
Jun 24 面试题
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加入ftp扩展的解决方法
2013/02/07 PHP
php短网址和数字之间相互转换的方法
2015/03/13 PHP
De facto standard 世界上不可思议的事实标准
2010/08/29 Javascript
Jquery实现视频播放页面的关灯开灯效果
2013/05/27 Javascript
firefox浏览器不支持innerText的解决方法
2013/08/07 Javascript
nodejs教程之制作一个简单的文章发布系统
2014/11/21 NodeJs
js闭包实现按秒计数
2015/04/23 Javascript
jquery实现简单的表单验证
2015/11/17 Javascript
JavaScript SHA1加密算法实现详细代码
2016/10/06 Javascript
AngularJs篇:使用AngularJs打造一个简易权限系统的实现代码
2016/12/26 Javascript
利用vscode编写vue的简单配置详解
2017/06/17 Javascript
JavaScript原生实现观察者模式的示例
2017/12/15 Javascript
微信小程序 textarea 层级过高问题简单解决方案
2019/10/14 Javascript
nuxt 页面路由配置,主页轮播组件开发操作
2020/11/05 Javascript
vue 封装面包屑组件教程
2020/11/16 Javascript
vue watch监控对象的简单方法示例
2021/01/07 Vue.js
[08:44]DOTA2发布会群星聚首 我们都是刀塔人
2014/03/21 DOTA
[01:00:13]完美世界DOTA2联赛 LBZS vs Forest 第一场 11.07
2020/11/09 DOTA
[01:35:53]完美世界DOTA2联赛PWL S3 Magma vs GXR 第二场 12.13
2020/12/17 DOTA
[48:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第二场 1月29日
2021/03/11 DOTA
Python中的自定义函数学习笔记
2014/09/23 Python
详解Python中最难理解的点-装饰器
2017/04/03 Python
深入了解Python中pop和remove的使用方法
2018/01/09 Python
Tensorflow卷积神经网络实例进阶
2018/05/24 Python
Python 查找list中的某个元素的所有的下标方法
2018/06/27 Python
pandas 使用均值填充缺失值列的小技巧分享
2019/07/04 Python
python自动循环定时开关机(非重启)测试
2019/08/26 Python
np.newaxis 实现为 numpy.ndarray(多维数组)增加一个轴
2019/11/30 Python
Python自动采集微信联系人的实现示例
2020/02/28 Python
如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑
2020/10/15 Python
什么是数组名
2012/05/10 面试题
总经理秘书的岗位职责
2013/12/27 职场文书
创业计划书的写作技巧及要点
2014/01/31 职场文书
入党积极分子自我鉴定范文
2014/03/25 职场文书
学校领导班子四风问题整改意见
2014/10/02 职场文书
nginx 配置指令之location使用详解
2022/05/25 Servers