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

面试题 相关文章推荐
PHP两种查询函数array/row的区别
Jun 03 面试题
Java TransactionAPI (JTA) 主要包含几部分
Dec 07 面试题
"火柴棍式"程序员面试题
Mar 16 面试题
Linux内核的同步机制是什么?主要有哪几种内核锁
Jan 03 面试题
介绍一下Linux内核的排队自旋锁
Aug 27 面试题
如何利用cmp命令比较文件
Sep 23 面试题
Linux开机引导的步骤是什么
Feb 26 面试题
新媒传信软件测试面试题
Feb 24 面试题
说说在weblogic中开发消息Bean时的persistent与non-persisten的差别
Apr 07 面试题
int和Integer有什么区别
May 25 面试题
解释下面关于J2EE的名词
Nov 15 面试题
Delphi工程师笔试题
Sep 21 面试题
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
Session的工作方式
2006/10/09 PHP
php 购物车实例(申精)
2009/05/11 PHP
PHP生成图片验证码、点击切换实例
2014/06/25 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
2015/04/08 PHP
深入探究PHP的多进程编程方法
2015/08/18 PHP
PHP编程获取音频文件时长的方法【基于getid3类】
2017/04/20 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
提示$ is not defined错误分析及解决
2013/04/09 Javascript
Javascript 浮点运算的问题分析与解决方法
2013/08/27 Javascript
jquery向上向下取整适合分页查询
2014/09/06 Javascript
js 连续赋值的简单实现
2016/06/13 Javascript
JavaScript函数节流和函数防抖之间的区别
2017/02/15 Javascript
浅谈node模块与npm包管理工具
2018/01/03 Javascript
使用Angular CLI从蓝本生成代码详解
2018/03/24 Javascript
jQuery实现动态添加和删除input框代码实例
2019/03/29 jQuery
JS控制只能输入数字并且最多允许小数点两位
2019/11/24 Javascript
[44:40]2018DOTA2亚洲邀请赛3月30日 小组赛A组Liquid VS OG
2018/03/31 DOTA
[01:07:11]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
2016/01/20 Python
PHP实现发送和接收JSON请求
2018/06/07 Python
pytorch中的embedding词向量的使用方法
2019/08/18 Python
PyTorch加载预训练模型实例(pretrained)
2020/01/17 Python
Django filter动态过滤与排序实现过程解析
2020/11/26 Python
python链表类中获取元素实例方法
2021/02/23 Python
CSS3制作气泡对话框的实例教程
2016/05/10 HTML / CSS
Bose美国官网:购买Bose耳机和音箱
2019/03/10 全球购物
项目资料员岗位职责
2013/12/10 职场文书
手机业务员岗位职责
2013/12/13 职场文书
护理专业自荐信范文
2014/02/26 职场文书
教师业务培训方案
2014/05/01 职场文书
工程部主管岗位职责
2015/02/12 职场文书
师范生小学见习总结
2015/06/23 职场文书
2015最新婚礼司仪主持词
2015/06/30 职场文书
节水宣传标语口号
2015/12/26 职场文书
zabbix如何添加监控主机和自定义监控项
2022/08/14 Servers
修改Nginx配置返回指定content-type的方法
2022/09/23 Servers