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


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

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

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

Tags in this post...

面试题 相关文章推荐
JSF面试题:Jsf中导航的标签是什么
Apr 20 面试题
super关键字的用法
Apr 10 面试题
中软Java笔试题
Nov 11 面试题
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
Nov 18 面试题
简述数组与指针的区别
Jan 02 面试题
.NET面试10题
Feb 24 面试题
什么是Connection-oriented Protocol/Connectionless Protocol面向连接的协议/无连接协议
Sep 06 面试题
C#如何调用Windows程序打开一个文档
Dec 26 面试题
介绍一下EJB的体系结构
Aug 01 面试题
如何拷贝一整个Java对象,包括它的状态
Dec 27 面试题
Java中的基本数据类型所占存储空间大小固定的吗
Feb 15 面试题
深圳茁壮笔试题
May 28 面试题
简述安装Slackware Linux系统的过程
Jan 12 #面试题
介绍一下Linux内核的排队自旋锁
Jan 04 #面试题
Windows和Linux动态库应用异同
Apr 17 #面试题
linux面试题参考答案(9)
Jan 07 #面试题
linux面试题参考答案(8)
Apr 19 #面试题
linux面试题参考答案(7)
Oct 29 #面试题
linux面试题参考答案(6)
Jun 23 #面试题
You might like
php htmlspecialchars加强版
2010/02/16 PHP
php excel类 phpExcel使用方法介绍
2010/08/21 PHP
PHP简单实现无限级分类的方法
2016/05/13 PHP
PHP随机生成中文段落示例【测试网站内容时使用】
2020/04/26 PHP
PHP反射基础知识回顾
2020/09/10 PHP
事件模型在各浏览器中存在差异
2010/10/20 Javascript
javaScript 利用闭包模拟对象的私有属性
2011/12/29 Javascript
jQuery Pagination Ajax分页插件(分页切换时无刷新与延迟)中文翻译版
2013/01/11 Javascript
JS幻灯片可循环播放可平滑旋转带滚动导航(自写)
2013/08/05 Javascript
javascript Event对象详解及使用示例
2013/11/22 Javascript
js代码实现的加入收藏效果并兼容主流浏览器
2014/06/23 Javascript
jQuery的ready方法详解
2014/11/27 Javascript
NodeJS中Buffer模块详解
2015/01/07 NodeJs
vue 实现 tomato timer(蕃茄钟)实例讲解
2017/07/24 Javascript
解决vue点击控制单个样式的问题
2018/09/05 Javascript
vue中使用better-scroll实现滑动效果及注意事项
2018/11/15 Javascript
element ui table(表格)实现点击一行展开功能
2018/12/04 Javascript
js实现div色块拖动录制
2020/01/16 Javascript
Python使用matplotlib绘图无法显示中文问题的解决方法
2018/03/14 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
2018/10/15 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
2018/10/15 Python
python实现事件驱动
2018/11/21 Python
Python configparser模块配置文件过程解析
2020/03/03 Python
python 将视频 通过视频帧转换成时间实例
2020/04/23 Python
TensorFlow Autodiff自动微分详解
2020/07/06 Python
Python对excel的基本操作方法
2021/02/18 Python
美国彩妆品牌:Coastal Scents
2017/04/01 全球购物
如何在.net Winform里面显示PDF文档
2012/09/11 面试题
计算机开发个人求职信范文
2013/09/26 职场文书
裁员通知
2015/04/25 职场文书
大学生就业意向书
2015/05/11 职场文书
2016银行求职自荐信
2016/01/28 职场文书
jQuery ajax - getScript() 方法和getJSON方法
2021/05/14 jQuery
浅谈Python中的函数(def)及参数传递操作
2021/05/25 Python
mybatis3中@SelectProvider传递参数方式
2021/08/04 Java/Android
Python可视化神器pyecharts之绘制地理图表练习
2022/07/07 Python