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


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

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

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

Tags in this post...

面试题 相关文章推荐
说出数据连接池的工作机制是什么?
Apr 19 面试题
阿里巴巴Oracle DBA笔试题答案-备份恢复类
Nov 20 面试题
explicit和implicit的含义
Nov 15 面试题
internal修饰符起什么作用
Dec 16 面试题
介绍一下grep命令的使用
Jun 12 面试题
linux面试题参考答案(10)
Nov 04 面试题
东方红海科技面试题软件测试方面
Feb 08 面试题
remote接口和home接口主要作用
May 15 面试题
AJAX应用和传统Web应用有什么不同
Aug 24 面试题
介绍下Java中==和equals的区别
Sep 01 面试题
一套中级Java程序员笔试题
Jan 14 面试题
设置器与访问器的定义以及各自特点
Jan 08 面试题
简述安装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下mysql数据库操作类(改自discuz)
2010/07/03 PHP
PHP学习笔记 用户注册模块用户类以及验证码类
2011/09/20 PHP
php 文件缓存函数
2011/10/08 PHP
php解析json数据实例
2014/08/19 PHP
Linux(CentOS)下PHP扩展PDO编译安装的方法
2016/04/07 PHP
ExtJS 设置级联菜单的默认值
2010/06/13 Javascript
如何在指定的地方插入html内容和文本内容
2013/12/23 Javascript
javascript中的正则表达式使用指南
2015/03/01 Javascript
JavaScript声明变量名的语法规则
2015/07/10 Javascript
使用AJAX实现Web页面进度条的实例分享
2016/05/06 Javascript
全面解析多种Bootstrap图片轮播效果
2016/05/27 Javascript
有关文件上传 非ajax提交 得到后台数据问题
2016/10/12 Javascript
详解Vue.js搭建路由报错 router.map is not a function
2017/06/27 Javascript
jQuery中将json数据显示到页面表格的方法
2018/05/27 jQuery
微信小程序CSS3动画下拉菜单效果
2018/11/04 Javascript
vue实现绑定事件的方法实例代码详解
2019/06/20 Javascript
Vue前端项目部署IIS的实现
2020/01/06 Javascript
探寻python多线程ctrl+c退出问题解决方案
2014/10/23 Python
wxPython之解决闪烁的问题
2018/01/15 Python
python感知机实现代码
2019/01/18 Python
python and or用法详解
2019/06/26 Python
python写入文件自动换行问题的方法
2019/07/05 Python
利用python-docx模块写批量生日邀请函
2019/08/26 Python
Python Socketserver实现FTP文件上传下载代码实例
2020/03/27 Python
利用django model save方法对未更改的字段依然进行了保存
2020/03/28 Python
StubHub智利:购买和出售您的门票
2016/11/23 全球购物
Kidsroom台湾:来自德国的婴儿用品
2017/12/11 全球购物
高清安全摄像头系统:Lorex Technology
2018/07/20 全球购物
美国Curacao百货连锁店网站:iCuracao.com
2019/07/20 全球购物
分别介绍一下Session Bean和Entity Bean
2015/03/13 面试题
缴纳养老保险的证明
2014/01/10 职场文书
2014年社团工作总结范文
2014/11/27 职场文书
经营目标责任书
2015/05/08 职场文书
出生证明范本
2015/06/15 职场文书
《我和小伙伴》教学反思
2016/02/20 职场文书
Java实现二维数组和稀疏数组之间的转换
2021/06/27 Java/Android