Linux内核的同步机制是什么?主要有哪几种内核锁


Posted in 面试题 onJuly 11, 2016
Linux的同步机制从2.0到2.6以来不断发展完善。从最初的原子操作,到后来的信号量,从大内核锁到今天的自旋锁。这些同步机制的发展伴随Linux从单处理器到对称多处理器的过渡;
伴随着从非抢占内核到抢占内核的过度。Linux的锁机制越来越有效,也越来越复杂。

Linux的内核锁主要是自旋锁和信号量。
自旋锁最多只能被一个可执行线程持有,如果一个执行线程试图请求一个已被争用(已经被持有)的自旋锁,那么这个线程就会一直进行忙循环——旋转——等待锁重新可用。要是锁未被争用,请求它的执行线程便能立刻得到它并且继续进行。自旋锁可以在任何时刻防止多于一个的执行线程同时进入临界区。
Linux中的信号量是一种睡眠锁。如果有一个任务试图获得一个已被持有的信号量时,信号量会将其推入等待队列,然后让其睡眠。这时处理器获得自由去执行其它代码。当持有信号量的进程将信号量释放后,在等待队列中的一个任务将被唤醒,从而便可以获得这个信号量。

信号量的睡眠特性,使得信号量适用于锁会被长时间持有的情况;只能在进程上下文中使用,因为中断上下文中是不能被调度的;另外当代码持有信号量时,不可以再持有自旋锁。

Tags in this post...

面试题 相关文章推荐
Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别?
Jun 05 面试题
Java如何格式化日期
Aug 07 面试题
怎么处理XML的中文问题
Mar 26 面试题
C++:局部变量能否和全局变量重名
Mar 03 面试题
RealTek面试题
Jun 28 面试题
在什么时候需要使用"常引用"
Dec 31 面试题
const和static readonly区别
May 20 面试题
linux面试题参考答案(11)
Nov 26 面试题
实体的生命周期
Aug 31 面试题
华为python面试题
May 03 面试题
shell变量的作用空间是什么
Aug 17 面试题
什么是ESB?请介绍一下ESB?
May 27 面试题
简述安装Slackware Linux系统的过程
May 08 #面试题
介绍一下Linux内核的排队自旋锁
Aug 27 #面试题
Windows和Linux动态库应用异同
Jul 28 #面试题
linux面试题参考答案(9)
Jan 29 #面试题
linux面试题参考答案(8)
Aug 11 #面试题
linux面试题参考答案(7)
Jul 24 #面试题
linux面试题参考答案(6)
Aug 29 #面试题
You might like
dedecms 制作模板中使用的全局标记图文教程
2007/03/11 PHP
ThinkPHP里用U方法调用js文件实例
2015/06/18 PHP
Smarty最简单实现列表奇偶变色的方法
2015/07/01 PHP
php英文单词统计器
2016/06/23 PHP
thinkPHP5使用Rabc实现权限管理
2019/08/28 PHP
使用git迁移Laravel项目至新开发环境的步骤详解
2020/04/06 PHP
javascript中使用css需要注意的地方小结
2010/09/01 Javascript
javascript动态加载三
2012/08/22 Javascript
javascript:void(0)的问题使用探讨
2014/04/10 Javascript
jquery常用方法及使用示例汇总
2014/11/08 Javascript
使用node.js 获取客户端信息代码分享
2014/11/26 Javascript
js实现跟随鼠标移动且带关闭功能的图片广告实例
2015/02/26 Javascript
jQuery采用连缀写法实现的折叠菜单效果
2015/09/18 Javascript
自己动手写的javascript前端等待控件
2015/10/30 Javascript
常用javascript表单验证汇总
2020/07/20 Javascript
在JS中a标签加入单击事件屏蔽href跳转页面
2016/12/16 Javascript
JavaScript字符串对象(string)基本用法示例
2017/01/18 Javascript
Angular中ng-bind和ng-model的区别实例详解
2017/04/10 Javascript
实现一个完整的Node.js RESTful API的示例
2017/09/29 Javascript
浅谈gulp创建完整的项目流程
2017/12/20 Javascript
详解Javascript 中的 class、构造函数、工厂函数
2017/12/20 Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
2020/05/30 jQuery
JavaScript如何判断对象有某属性
2020/07/03 Javascript
下载糗事百科的内容_python版
2008/12/07 Python
python如何派生内置不可变类型并修改实例化行为
2018/03/21 Python
PyQt5 QListWidget选择多项并返回的实例
2019/06/17 Python
python RC4加密操作示例【测试可用】
2019/09/26 Python
使用phonegap获取位置信息的实现方法
2017/03/31 HTML / CSS
Koral官方网站:女性时尚运动服
2019/04/10 全球购物
急诊科护士自我鉴定
2013/10/14 职场文书
入党思想汇报
2014/01/05 职场文书
家长给孩子的表扬信
2014/01/17 职场文书
小学班主任评语
2014/12/29 职场文书
构建和谐校园倡议书
2015/01/19 职场文书
使用Redis实现点赞取消点赞的详细代码
2022/03/20 Redis
redis调用二维码时的不断刷新排查分析
2022/04/01 Redis