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

面试题 相关文章推荐
编写用C语言实现的求n阶阶乘问题的递归算法
Oct 21 面试题
C语言笔试题
Sep 04 面试题
编码实现字符串转整型的函数
Jun 02 面试题
新大陆软件面试题
Nov 24 面试题
linux面试题参考答案(1)
Jan 22 面试题
Linux如何为某个操作添加别名
Mar 01 面试题
一些Solaris面试题
Dec 22 面试题
Java中各种基本数据类型的默认值都是什么
Dec 22 面试题
介绍一下javax.servlet.Servlet接口及其主要方法
Nov 30 面试题
Servlet如何得到服务器的信息
Dec 22 面试题
什么是ESB?请介绍一下ESB?
May 27 面试题
Java软件工程师综合面试题笔试题
Sep 08 面试题
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
php 去除html标记--strip_tags与htmlspecialchars的区别详解
2013/06/26 PHP
教你php如何实现验证码
2016/01/20 PHP
PHP 用session与gd库实现简单验证码生成与验证的类方法
2016/11/15 PHP
PHP的PDO大对象(LOBs)
2019/01/27 PHP
php用户名的密码加密更安全的方法
2019/06/21 PHP
Javascript & DHTML 实例编程(教程)(三)初级实例篇1—上传文件控件实例
2007/06/02 Javascript
关于JavaScript中原型继承中的一点思考
2012/07/25 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
jQuery 文本框得失焦点的简单实例
2014/02/19 Javascript
javascript实现window.print()去除页眉页脚
2014/12/30 Javascript
详解js跨域原理以及2种解决方案
2015/12/09 Javascript
js 连续赋值的简单实现
2016/06/13 Javascript
js遮罩效果制作弹出注册界面效果
2017/01/25 Javascript
详谈js模块化规范
2017/07/07 Javascript
详解vue组件基础
2018/05/04 Javascript
js canvas实现橡皮擦效果
2018/12/20 Javascript
微信小程序template模版的使用方法
2019/04/13 Javascript
node.js实现上传文件功能
2019/07/15 Javascript
[33:42]LGD vs OG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
树莓派中python获取GY-85九轴模块信息示例
2013/12/05 Python
Python之父谈Python的未来形式
2016/07/01 Python
Python3.6连接Oracle数据库的方法详解
2018/05/18 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
2019/02/21 Python
Python logging日志模块 配置文件方式
2020/07/12 Python
css3的focus-within选择器的使用
2020/05/11 HTML / CSS
HTML如何让IMG自动适应DIV容器大小的实现方法
2020/02/25 HTML / CSS
世界上最大的餐具公司:Oneida
2016/12/17 全球购物
英国知名奢侈品包包品牌:Milli Millu
2016/12/22 全球购物
奥地利体育网上商店:Gigasport
2019/10/09 全球购物
成人继续教育实施方案
2014/03/01 职场文书
教师反腐倡廉演讲稿
2014/09/03 职场文书
婚前财产协议书范本
2014/10/19 职场文书
我们的节日端午节活动总结
2015/02/11 职场文书
2015年教师节贺卡寄语
2015/03/24 职场文书
民事答辩状格式范文
2015/05/21 职场文书
2016年优秀党员教师先进事迹材料
2016/02/29 职场文书