介绍一下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错误
Oct 14 面试题
Weblogic的布署方式
Aug 23 面试题
Java面试题:请问一下代码输出是什么
May 27 面试题
请编写一个 C 函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值
Sep 15 面试题
"火柴棍式"程序员面试题
Mar 16 面试题
编写strcpy函数
Jun 24 面试题
什么是唯一索引
Jul 05 面试题
广州足迹信息技术有限公司Java软件工程师试题
Feb 15 面试题
提高EJB性能都有哪些技巧
Mar 25 面试题
介绍一下JMS编程步骤
Sep 22 面试题
中软国际Java程序员机试题
Aug 19 面试题
送给程序员的20个Java集合面试问题
Aug 06 面试题
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
回答PHPCHINA上的几个问题:URL映射
2007/02/14 PHP
用PHP实现浏览器点击下载TXT文档的方法详解
2013/06/02 PHP
php多层数组与对象的转换实例代码
2013/08/05 PHP
Zend Framework教程之前端控制器Zend_Controller_Front用法详解
2016/03/07 PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
2017/03/08 PHP
PHP实现腾讯与百度坐标转换
2017/08/05 PHP
PHP实现正则匹配所有括号中的内容
2018/06/22 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
jquery中输入验证中一个不错的效果
2010/08/21 Javascript
JS中不为人知的五种声明Number的方式简要概述
2013/02/22 Javascript
图片Slider 带左右按钮的js示例
2013/08/30 Javascript
浅析jQuery1.8的几个小变化
2013/12/10 Javascript
在Node.js中使用HTTP上传文件的方法
2015/06/23 Javascript
AngularJS Bootstrap详细介绍及实例代码
2016/07/28 Javascript
微信小程序使用第三方库Immutable.js实例详解
2016/09/27 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
2016/11/30 Javascript
Vue实例简单方法介绍
2017/01/20 Javascript
Angularjs使用指令做表单校验的方法
2017/03/31 Javascript
原生JS实现ajax与ajax的跨域请求实例
2017/12/01 Javascript
详谈vue中router-link和传统a链接的区别
2020/07/22 Javascript
vue中路由跳转不计入history的操作
2020/09/21 Javascript
layui使用及简单的三级联动实现教程
2020/12/01 Javascript
[02:50]【扭转乾坤,只此一招】DOTA2全新版本永雾林渊开启新篇章
2020/12/24 DOTA
利用Python中的mock库对Python代码进行模拟测试
2015/04/16 Python
Python可迭代对象操作示例
2019/05/07 Python
python使用openCV遍历文件夹里所有视频文件并保存成图片
2020/01/14 Python
教你如何用python操作摄像头以及对视频流的处理
2020/10/12 Python
CSS3绘制有活力的链接下划线
2016/07/14 HTML / CSS
详解css3使用transform出现字体模糊的解决办法
2020/10/16 HTML / CSS
skyn ICELAND官网:冰岛成分天然护肤品
2020/08/24 全球购物
网络工程师面试(三木通信技术有限公司)
2013/06/05 面试题
运动会拉拉队口号
2014/06/09 职场文书
领导干部学习“三严三实”思想汇报
2014/09/15 职场文书
学校运动会通讯稿
2015/07/18 职场文书
保险公司岗前培训工作总结
2015/10/24 职场文书
centos8安装MongoDB的详细过程
2021/10/24 MongoDB