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

面试题 相关文章推荐
介绍一下Cookie和Session及他们之间的区别
Nov 20 面试题
下面这个程序执行后会有什么错误或者效果
Nov 03 面试题
什么是聚集索引和非聚集索引
Jan 17 面试题
WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回?
Feb 21 面试题
盛大二次面试题
Nov 18 面试题
抽象类和接口的区别
Sep 19 面试题
Linux内核产生并发的原因
Jul 13 面试题
LINUX下线程,GDI类的解释
Dec 14 面试题
Linux操作面试题
May 16 面试题
Linux面试经常问的文件系统操作命令
Nov 05 面试题
写clone()方法时,通常都有一行代码,是什么?
Oct 31 面试题
中间件的定义
Aug 09 面试题
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
在普通HTTP上安全地传输密码
2007/07/21 PHP
PHP图片处理之使用imagecopyresampled函数裁剪图片例子
2014/11/19 PHP
php编写的抽奖程序中奖概率算法
2015/05/14 PHP
浅谈PHP中JSON数据操作
2015/07/01 PHP
php时间函数用法分析
2016/05/28 PHP
php日志函数error_log用法实例分析
2019/09/23 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
PHP执行linux命令6个函数代码实例
2020/11/24 PHP
JavaScript 捕获窗口关闭事件
2009/07/26 Javascript
JavaScript实现继承的4种方法总结
2014/10/16 Javascript
javascript实现修改微信分享的标题内容等
2014/12/11 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
2015/06/01 Javascript
基于JS如何实现类似QQ好友头像hover时显示资料卡的效果(推荐)
2016/06/09 Javascript
JS实现兼容火狐及IE iframe onload属性的遮罩层隐藏及显示效果
2016/08/23 Javascript
Javascript将字符串日期格式化为yyyy-mm-dd的方法
2016/10/27 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
2020/05/30 Javascript
AngularJS 表单验证手机号的实例(非必填)
2017/11/12 Javascript
jQuery EasyUI window窗口使用实例代码
2017/12/25 jQuery
基于vue的验证码组件的示例代码
2019/01/22 Javascript
微信小程序 bindtap 传参的实例代码
2020/02/21 Javascript
Python获取网页上图片下载地址的方法
2015/03/11 Python
python实现kMeans算法
2017/12/21 Python
python ftp 按目录结构上传下载的实现代码
2018/09/12 Python
详解python数据结构和算法
2019/04/18 Python
详解爬虫被封的问题
2019/04/23 Python
利用django model save方法对未更改的字段依然进行了保存
2020/03/28 Python
浅谈TensorFlow之稀疏张量表示
2020/06/30 Python
html5实现微信打飞机游戏
2014/03/27 HTML / CSS
What is the purpose of Void class? Void类的作用是什么?
2016/10/31 面试题
小学生元旦广播稿
2014/02/21 职场文书
医德考评自我评价
2014/09/14 职场文书
派出所副所长四风问题个人整改措施思想汇报
2014/10/13 职场文书
如何写贫困证明申请书
2014/10/29 职场文书
2014年学校教学工作总结
2014/12/06 职场文书
检讨书格式范文
2015/05/07 职场文书
「天才王子的赤字国家重生术」妮妮姆·拉雷粘土人开订
2022/03/21 日漫