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

面试题 相关文章推荐
您熟悉ORM(Object-Relation Mapping)吗?请谈谈您所理解的ORM
Feb 08 面试题
怎样声明接口
Sep 19 面试题
华美博弈C/VC工程师笔试试题
Jul 16 面试题
一套带答案的C++笔试题
Jan 10 面试题
怎样建立和理解非常复杂的声明?例如定义一个包含N 个指向返回 指向字符的指针的函数的指针的数组?
Mar 19 面试题
数组越界问题
Oct 21 面试题
linux面试题参考答案(10)
Oct 26 面试题
如何利用find命令查找文件
Nov 18 面试题
sort命令的作用和用法
Aug 25 面试题
分别介绍一下Session Bean和Entity Bean
Mar 13 面试题
Prototype如何更新局部页面
Mar 03 面试题
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
Sep 26 面试题
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 3行代码的分页算法(求起始页和结束页)
2009/10/21 PHP
ThinkPHP调用百度翻译类实现在线翻译
2014/06/26 PHP
php字符串过滤与替换小结
2015/01/26 PHP
PHP基于MySQLI函数封装的数据库连接工具类【定义与用法】
2017/08/11 PHP
深入浅析安装PhpStorm并激活的步骤详解
2020/09/17 PHP
javascript 时间比较实现代码
2009/10/28 Javascript
js控制网页背景音乐播放与停止的方法
2015/02/06 Javascript
Node.js包管理器Yarn的入门介绍与安装
2016/10/17 Javascript
jQuery+CSS实现的table表格行列转置功能示例
2018/01/08 jQuery
使用Vue开发一个实时性时间转换指令
2018/01/17 Javascript
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
2018/02/08 Javascript
对angular4子路由&辅助路由详解
2018/10/09 Javascript
js设置鼠标悬停改变背景色实现详解
2019/06/26 Javascript
微信小程序class封装http代码实例
2019/08/24 Javascript
JS删除对象中某一属性案例详解
2020/09/08 Javascript
[51:44]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第二场
2018/04/04 DOTA
python实现rest请求api示例
2014/04/22 Python
跟老齐学Python之数据类型总结
2014/09/24 Python
用Python实现服务器中只重载被修改的进程的方法
2015/04/30 Python
在Python的Django框架中包装视图函数
2015/07/20 Python
深入解析Python中的lambda表达式的用法
2015/08/28 Python
Python yield与实现方法代码分析
2018/02/06 Python
selenium+python自动化测试之多窗口切换
2019/01/23 Python
关于pytorch中网络loss传播和参数更新的理解
2019/08/20 Python
巴西在线鞋店:Shoestock
2017/10/28 全球购物
澳大利亚领先的女性运动服品牌:Lorna Jane
2020/06/19 全球购物
新闻网站实习自我鉴定
2013/09/25 职场文书
大学自我鉴定范文
2013/12/26 职场文书
幼儿教师考核制度
2014/01/25 职场文书
司机职责范本
2014/03/08 职场文书
初三学生评语大全
2014/04/24 职场文书
污水处理保证书
2015/05/09 职场文书
法制工作总结2015
2015/07/23 职场文书
运动会100米广播稿
2015/08/19 职场文书
CocosCreator如何实现划过的位置显示纹理
2021/04/14 Javascript
解决springboot druid数据库连接失败后一直重连的方法
2022/04/19 Java/Android