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

面试题 相关文章推荐
JSF如何进行表格处理及取值
Aug 06 面试题
指针和引用有什么区别
Jan 13 面试题
const char*, char const*, char*const的区别是什么
Jul 09 面试题
struct和class的区别
Nov 20 面试题
.NET remoting的两种通道是什么
May 31 面试题
explicit和implicit的含义
Nov 15 面试题
常用UNIX 命令(Linux的常用命令)
Jul 10 面试题
Linux上比较文件的命令都有哪些
Sep 28 面试题
如何用Python来进行查询和替换一个文本字符串
Jan 02 面试题
String s = new String(“xyz”);创建了几个String Object?
Aug 05 面试题
代码中finally中的代码会不会执行
Feb 06 面试题
灵泰克Java笔试题
Jan 09 面试题
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
ThinkPHP的RBAC(基于角色权限控制)深入解析
2013/06/17 PHP
php fread读取文件注意事项
2016/09/24 PHP
javascript与webservice的通信实现代码
2010/12/25 Javascript
浅谈$(document)和$(window)的区别
2015/07/15 Javascript
基于jQuery实现音乐播放试听列表
2016/04/14 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
JavaScript中自带的 reduce()方法使用示例详解
2016/08/10 Javascript
vue中渐进过渡效果实现
2016/10/27 Javascript
javascript实现文字无缝滚动
2016/12/27 Javascript
angular实现form验证实例代码
2017/01/17 Javascript
canvas绘制表盘时钟
2017/01/23 Javascript
利用Javascript实现简单的转盘抽奖
2017/02/13 Javascript
对象不支持indexOf属性或方法的解决方法(必看)
2017/05/28 Javascript
nodejs简单实现TCP服务器端和客户端的聊天功能示例
2018/01/04 NodeJs
vue技术分享之你可能不知道的7个秘密
2018/04/09 Javascript
基于Vue的延迟加载插件vue-view-lazy
2018/05/21 Javascript
详解JavaScript 中 if / if...else...替换方式
2018/07/15 Javascript
Bootstrap实现省市区三级联动(亲测可用)
2019/07/26 Javascript
js仿京东放大镜效果
2020/08/09 Javascript
Python切换pip安装源的方法详解
2016/11/18 Python
对python .txt文件读取及数据处理方法总结
2018/04/23 Python
Python学习笔记之pandas索引列、过滤、分组、求和功能示例
2019/06/03 Python
python三大神器之fabric使用教程
2019/06/10 Python
使用Keras训练好的.h5模型来测试一个实例
2020/07/06 Python
Python reversed反转序列并生成可迭代对象
2020/10/22 Python
咖啡为什么会有酸味?你喝到的咖啡為什麼是酸的?
2021/03/17 冲泡冲煮
CSS3 伪类选择器 nth-child()说明
2010/07/10 HTML / CSS
css3中less实现文字长阴影(long shadow)
2020/04/24 HTML / CSS
数据库测试通常都包括哪些方面
2015/11/30 面试题
《她是我的朋友》教学反思
2014/04/26 职场文书
实施意见格式范本
2015/06/05 职场文书
毕业生自我鉴定范文
2019/05/13 职场文书
python实现高效的遗传算法
2021/04/07 Python
python opencv通过按键采集图片源码
2021/05/20 Python
一条 SQL 语句执行过程
2022/03/17 MySQL
利用Apache Common将java对象池化的问题
2022/06/16 Servers