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

面试题 相关文章推荐
一些高难度的SQL面试题
Nov 29 面试题
SQL里面IN比较快还是EXISTS比较快
Jul 19 面试题
TCP/IP中的TCP和IP分别承担什么责任
Apr 21 面试题
什么是URL
Dec 13 面试题
Can a struct inherit from another class? (结构体能继承类吗)
Jul 22 面试题
Linux不知道文件后缀名怎么判断文件类型
Aug 21 面试题
分别介绍一下Session Bean和Entity Bean
Mar 13 面试题
Why we need EJB
Oct 20 面试题
java程序员面试交流
Nov 29 面试题
Java基础类库面试题
Sep 04 面试题
95%的面试官都会问到的50道Java线程题,附答案
Aug 03 面试题
Ruby中的保护方法和私有方法与一般面向对象程序设计语言的一样吗
May 01 面试题
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+oracle 分页类
2006/10/09 PHP
php+js实现百度地图多点标注的方法
2016/11/30 PHP
jquery动画2.元素坐标动画效果(创建一个图片走廊)
2012/08/24 Javascript
js网页中的(运行代码)功能实现思路
2013/02/04 Javascript
浅析tr的隐藏和显示问题
2014/03/05 Javascript
Javascript基础知识(一)核心基础语法与事件模型
2014/09/29 Javascript
JavaScript 学习笔记之语句
2015/01/14 Javascript
每天一篇javascript学习小结(面向对象编程)
2015/11/20 Javascript
手机浏览器 后退按钮强制刷新页面方法总结
2016/10/09 Javascript
原生js验证简洁注册登录页面
2016/12/17 Javascript
JS简单实现父子窗口传值功能示例【未使用iframe框架】
2017/09/20 Javascript
详解vue2.0 不同屏幕适配及px与rem转换问题
2018/02/23 Javascript
原生js实现日期选择插件
2020/05/21 Javascript
JS图片懒加载技术实现过程解析
2020/07/27 Javascript
vue 函数调用加括号与不加括号的区别
2020/10/29 Javascript
python smtplib模块发送SSL/TLS安全邮件实例
2015/04/08 Python
初步解析Python下的多进程编程
2015/04/28 Python
Python实现简单拆分PDF文件的方法
2015/07/30 Python
Python利用openpyxl库遍历Sheet的实例
2018/05/03 Python
解决python3中cv2读取中文路径的问题
2018/12/05 Python
Pandas之ReIndex重新索引的实现
2019/06/25 Python
关于pytorch多GPU训练实例与性能对比分析
2019/08/19 Python
Python 求数组局部最大值的实例
2019/11/26 Python
python中的split()函数和os.path.split()函数使用详解
2019/12/21 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
2020/02/18 Python
CSS3 渐变(Gradients)之CSS3 径向渐变
2016/07/08 HTML / CSS
详解HTML5中的元素与元素
2015/08/17 HTML / CSS
美国高档帽子网上商店:Hats.com
2018/08/09 全球购物
师范院校学生自荐信范文
2013/12/27 职场文书
《海上日出》教学反思
2016/02/23 职场文书
2019秋季运动会口号
2019/06/25 职场文书
导游词之宿迁乾隆行宫
2019/10/15 职场文书
Python 多线程之threading 模块的使用
2021/04/14 Python
MySQL通过binlog恢复数据
2021/05/27 MySQL
改造DE1103三步曲
2022/04/07 无线电
JavaScript前端面试组合函数
2022/06/21 Javascript