介绍一下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面试题及答案-填空题
Apr 26 面试题
解释一下ArrayList Vector和LinkedList的实现和区别
Apr 26 面试题
JPA面试常见问题
Nov 14 面试题
serialVersionUID具有什么样的特征
Feb 20 面试题
面向对象编程的优势是什么
Dec 17 面试题
在c#中using和new这两个关键字有什么意义
May 19 面试题
Linux文件操作命令都有哪些
Feb 27 面试题
一套比较完整的软件测试人员面试题
May 13 面试题
北京鼎普科技股份有限公司软件测试面试题
Apr 07 面试题
Prototype如何为一个Ajax添加一个参数
Dec 06 面试题
介绍一下MYSQL常用的优化技巧
Oct 25 面试题
Java的类可以定义为Protected或者Private得吗
Sep 25 面试题
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
Symfony实现行为和模板中取得request参数的方法
2016/03/17 PHP
ThinkPHP 3.2.3实现加减乘除图片验证码
2018/12/05 PHP
鼠标移动到一张图片时变为另一张图片
2006/12/05 Javascript
jQuery 性能优化指南(2)
2009/05/21 Javascript
jquery 1.4.2发布!主要是性能与API
2010/02/25 Javascript
监控 url fragment变化的js代码
2010/04/19 Javascript
JQuery Dialog的内存泄露问题解决方法
2010/06/18 Javascript
jquery each()源代码
2011/02/14 Javascript
如何判断元素是否为HTMLElement元素
2013/12/06 Javascript
js焦点文字滚动效果代码分享
2015/08/25 Javascript
封装的dialog插件 基于bootstrap模态对话框的简单扩展
2016/08/10 Javascript
AngularJS  $on、$emit和$broadcast的使用
2016/09/05 Javascript
使用jquery如何获取时间
2016/10/13 Javascript
巧用canvas
2017/01/21 Javascript
写jQuery插件时的注意点
2017/02/20 Javascript
TypeScript入门-接口
2017/03/30 Javascript
angular动态删除ng-repaeat添加的dom节点的方法
2017/07/20 Javascript
Javascript实现运算符重载详解
2018/04/07 Javascript
浅谈Angular6的服务和依赖注入
2018/06/27 Javascript
微信小程序地图(map)组件点击(tap)获取经纬度的方法
2019/01/10 Javascript
JavaScript日期库date-fn.js使用方法解析
2020/09/09 Javascript
python中类的一些方法分析
2014/09/25 Python
python人人网登录应用实例
2014/09/26 Python
Python中的True,False条件判断实例分析
2015/01/12 Python
python实现指定字符串补全空格的方法
2015/04/30 Python
python互斥锁、加锁、同步机制、异步通信知识总结
2018/02/11 Python
python 简单照相机调用系统摄像头实现方法 pygame
2018/08/03 Python
pycharm修改文件的默认打开方式的步骤
2019/07/29 Python
CSS3实现各种图形的示例代码
2016/10/19 HTML / CSS
李宁官方网店:中国运动品牌
2017/11/02 全球购物
餐厅总厨求职信
2014/03/04 职场文书
企业安全标语
2014/06/07 职场文书
苏州园林导游词
2015/02/03 职场文书
雷锋电影观后感
2015/06/10 职场文书
天河观后感
2015/06/11 职场文书
Nginx虚拟主机的配置步骤过程全解
2022/03/31 Servers