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


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

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

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

Tags in this post...

面试题 相关文章推荐
PHP如何自定义函数
Sep 16 面试题
如何在Oracle中查看各个表、表空间占用空间的大小
Oct 31 面试题
什么是数据抽象
Nov 26 面试题
怎么可以提高数据库查询数据的速度
Jun 28 面试题
请解释流与文件有什么不同
Jul 29 面试题
C#可否对内存进行直接的操作
Feb 26 面试题
如何开启linux的ssh服务
Jun 03 面试题
软件测试面试题
Jan 05 面试题
什么是SCM(软件配置管理)
Aug 16 面试题
Prototype中如何为一个元素添加一个方法
Dec 08 面试题
介绍一下XMLHttpRequest对象
Feb 12 面试题
META-INF文件夹中的MANIFEST.MF的作用
Jun 21 面试题
简述安装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
使用PHP实现蜘蛛访问日志统计
2013/07/05 PHP
php使用类继承解决代码重复的问题
2015/02/11 PHP
深入浅析php json 格式控制
2015/12/24 PHP
TP5框架model常见操作示例小结【增删改查、聚合、时间戳、软删除等】
2020/04/05 PHP
JS中彻底删除JSON对象组成的数组中的元素
2020/09/22 PHP
javascript 多浏览器 事件大全
2010/03/23 Javascript
基于jquery的图片懒加载js
2010/06/30 Javascript
jQuery的写法不同导致的兼容性问题的解决方法
2010/07/29 Javascript
treepanel动态加载数据实现代码
2012/12/15 Javascript
AMD异步模块定义介绍和Require.js中使用jQuery及jQuery插件的方法
2014/06/06 Javascript
JQuery中使用.each()遍历元素学习笔记
2014/11/08 Javascript
jQuery实现切换页面过渡动画效果
2015/10/29 Javascript
详解JavaScript逻辑And运算符
2015/12/04 Javascript
jQuery四种选择器使用及示例
2016/06/05 Javascript
微信小程序 弹窗自定义实例代码
2017/03/08 Javascript
Vue.js实现分页查询功能
2020/11/15 Javascript
详解vue2.0 不同屏幕适配及px与rem转换问题
2018/02/23 Javascript
详解Angular6学习笔记之主从组件
2018/09/05 Javascript
Vue路由管理器Vue-router的使用方法详解
2020/02/05 Javascript
[03:49]辉夜杯现场龙骑士COSER秀情商“我喜欢芬队!”
2015/12/27 DOTA
[59:30]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.22
2019/09/05 DOTA
Python探索之静态方法和类方法的区别详解
2017/10/27 Python
python切片及sys.argv[]用法详解
2018/05/25 Python
Django forms组件的使用教程
2018/10/08 Python
Python读取txt某几列绘图的方法
2018/10/14 Python
解决python测试opencv时imread导致的错误问题
2019/01/26 Python
详解Python二维数组与三维数组切片的方法
2019/07/18 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
Python 多线程,threading模块,创建子线程的两种方式示例
2019/09/29 Python
如何让pre和textarea等HTML元素去掉滚动条自动换行自适应文本内容高度
2019/08/01 HTML / CSS
会议活动邀请函
2014/01/27 职场文书
给妈妈洗脚活动方案
2014/08/16 职场文书
群众路线调研报告范文
2014/11/03 职场文书
2014年英语工作总结
2014/12/20 职场文书
警用民用对讲机找不同
2022/02/18 无线电
Java 获取Word中所有的插入和删除修订的方法
2022/04/06 Java/Android