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

面试题 相关文章推荐
为什么使用接口?
Aug 13 面试题
怎样比较两个类型为String的字符串
Aug 17 面试题
金智子午JAVA面试题
Sep 04 面试题
写出二分查找算法的两种实现
May 13 面试题
如果NULL和0作为空指针常数是等价的,那我到底该用哪一个
Sep 16 面试题
上海中网科技笔试题
Feb 19 面试题
C#如何调用Word并打开一个Word文档
May 08 面试题
C#可否对内存进行直接的操作
Feb 26 面试题
什么是makefile? 如何编写makefile?
Aug 08 面试题
你们项目是如何进行变更控制的
Aug 26 面试题
线程同步的方法
Nov 23 面试题
一套Delphi的笔试题一
Feb 14 面试题
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
帅气的琦玉老师
2020/03/02 日漫
php中smarty区域循环的方法
2015/06/11 PHP
PHP设计模式之状态模式定义与用法详解
2018/04/02 PHP
css图片自适应大小
2007/11/28 Javascript
javascript实现的在当前窗口中漂浮框的代码
2010/03/15 Javascript
基于jquery的direction图片渐变动画效果
2010/05/24 Javascript
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
2011/08/28 Javascript
jQuery实现的文字hover颜色渐变效果实例
2016/02/20 Javascript
JS仿QQ好友列表展开、收缩功能(第一篇)
2017/07/07 Javascript
bootstrap轮播模板使用方法详解
2017/11/17 Javascript
Vue封装一个简单轻量的上传文件组件的示例
2018/03/21 Javascript
vue二级菜单导航点击选中事件的方法
2018/09/12 Javascript
Nodejs libuv运行原理详解
2019/08/21 NodeJs
electron 如何将任意资源打包的方法步骤
2020/04/16 Javascript
Element Dialog对话框的使用示例
2020/07/26 Javascript
javascript实现智能手环时间显示
2020/09/18 Javascript
[01:19:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第二局
2016/03/05 DOTA
python实现定制交互式命令行的方法
2014/07/03 Python
详解Python中的静态方法与类成员方法
2017/02/28 Python
Python基于回溯法子集树模板解决数字组合问题实例
2017/09/02 Python
TensorFlow模型保存/载入的两种方法
2018/03/08 Python
Python进阶:生成器 懒人版本的迭代器详解
2019/06/29 Python
详解Django 时间与时区设置问题
2019/07/23 Python
Python加载数据的5种不同方式(收藏)
2020/11/13 Python
详解Python Celery和RabbitMQ实战教程
2021/01/20 Python
英国珠宝钟表和家居礼品精品店:David Shuttle
2018/02/24 全球购物
杭州龙健科技笔试题.net部分笔试题
2016/01/24 面试题
毕业生就业自荐书
2013/12/15 职场文书
初中化学教学反思
2014/01/23 职场文书
美德好少年主要事迹
2014/01/29 职场文书
医药个人求职信范文
2014/01/29 职场文书
应届电子商务毕业自荐书范文
2014/02/11 职场文书
《明天,我们毕业》教学反思
2014/04/24 职场文书
公司年夜饭通知
2015/04/25 职场文书
django上传文件的三种方式
2021/04/29 Python
Ajax实现异步加载数据
2021/11/17 Javascript