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

面试题 相关文章推荐
PHP如何设置和取得Cookie值
Jun 30 面试题
数据库什么时候应该被重组
Nov 02 面试题
西安众合通用.net笔试题
Mar 18 面试题
杭州信雅达系统.NET工程师面试试题
Feb 08 面试题
2019年分享net面试的经历和题目
Aug 07 面试题
C#中类(class)与结构(struct)的异同
Nov 03 面试题
Linux文件系统类型
Feb 15 面试题
什么是规则表达式
May 03 面试题
EJB的基本架构
Sep 22 面试题
Ajax请求总共有多少种Callback
Jul 17 面试题
AssertionError 跟一下那个类是 “is – a”的关系
Feb 21 面试题
高级Java程序员面试题
Jun 23 面试题
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
索尼SONY SRF-S83/84电路分析和打磨
2021/03/02 无线电
用PHP实现WEB动态网页静态
2006/10/09 PHP
PHP 开发工具
2006/12/06 PHP
PHP开发的一些注意点总结
2010/10/12 PHP
PHP使用array_fill定义多维数组的方法
2015/03/18 PHP
PHP中$GLOBALS['HTTP_RAW_POST_DATA']和$_POST的区别分析
2017/07/03 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
2017/07/19 PHP
2014 年最热门的21款JavaScript框架推荐
2014/12/25 Javascript
轻松实现Bootstrap图片轮播
2020/04/20 Javascript
jquery仿QQ登录账号选择下拉框效果
2016/03/22 Javascript
JavaScript实现自动切换图片代码
2016/10/11 Javascript
javascript实现消灭星星小游戏简单版
2016/11/15 Javascript
基于JS实现bookstore静态页面的实例代码
2017/02/22 Javascript
JavaScript实现移动端轮播效果
2017/06/06 Javascript
浅析JavaScript中的特殊数据类型
2017/12/15 Javascript
Angular2+如何去除url中的#号详解
2017/12/20 Javascript
微信小程序实现侧边栏分类
2019/10/21 Javascript
vue表单数据交互提交演示教程
2019/11/13 Javascript
python实现批量获取指定文件夹下的所有文件的厂商信息
2014/09/28 Python
python3实现ftp服务功能(服务端 For Linux)
2017/03/24 Python
python数据抓取分析的示例代码(python + mongodb)
2017/12/25 Python
python3 发送任意文件邮件的实例
2018/01/23 Python
Python3中列表list合并的四种方法
2019/04/19 Python
keras的backend 设置 tensorflow,theano操作
2020/06/30 Python
基于logstash实现日志文件同步elasticsearch
2020/08/06 Python
Python grpc超时机制代码示例
2020/09/14 Python
python中watchdog文件监控与检测上传功能
2020/10/30 Python
全球性的在线时尚男装零售商:boohooMAN
2016/12/17 全球购物
护理专业个人求职简历的自我评价
2013/10/13 职场文书
自荐书模板
2013/12/15 职场文书
网络管理专业求职信
2014/03/15 职场文书
卫生系统先进事迹
2014/05/13 职场文书
公司委托书怎么写
2014/08/02 职场文书
教师党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
酒店员工管理制度
2015/08/05 职场文书
Windows7下FTP搭建图文教程
2022/08/05 Servers