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


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

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

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

Tags in this post...

面试题 相关文章推荐
PHP如何删除一个Cookie值
Nov 15 面试题
凌阳科技股份有限公司C++程序员面试题笔试题
Nov 20 面试题
介绍一下Transact-SQL中SPACE函数的用法
Sep 01 面试题
网络安全方面的面试题
Nov 04 面试题
星空联盟C# .net笔试题
Dec 05 面试题
C#中有没有静态构造函数,如果有是做什么用的?
Jun 04 面试题
Linux不知道文件后缀名怎么判断文件类型
Aug 21 面试题
什么是虚拟内存?虚拟内存有什么优势?
Feb 09 面试题
广州喜创信息技术有限公司JAVA软件工程师笔试题
Oct 17 面试题
JavaScript获取当前url根目录(路径)
Feb 19 面试题
Java如何调用外部Exe程序
Jul 04 面试题
JAVA高级程序员面试题
Sep 06 面试题
简述安装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验证码类代码( 最新修改,完全定制化! )
2010/12/02 PHP
Yii框架参数配置文件params用法实例分析
2019/09/11 PHP
基于JQuery.timer插件实现一个计时器
2010/04/25 Javascript
javascript 判断数组是否已包含了某个元素的函数
2010/05/30 Javascript
JavaScript中匿名函数用法实例
2015/03/23 Javascript
如何实现JavaScript动态加载CSS和JS文件
2020/12/28 Javascript
JavaScript学习笔记整理_setTimeout的应用
2016/09/19 Javascript
JS获取IE版本号与HTML设置IE文档模式的方法
2016/10/09 Javascript
基于Bootstrap 3 JQuery及RegExp的表单验证功能
2017/02/16 Javascript
Vue2 使用 Echarts 创建图表实例代码
2017/05/18 Javascript
详解vue项目优化之按需加载组件-使用webpack require.ensure
2017/06/13 Javascript
关于Stream和Buffer的相互转换详解
2017/07/26 Javascript
JS实现点击链接切换显示隐藏内容的方法
2017/10/19 Javascript
React-Router如何进行页面权限管理的方法
2017/12/06 Javascript
JavaScript实现多重继承的方法分析
2018/01/09 Javascript
JavaScript实现的前端AES加密解密功能【基于CryptoJS】
2018/08/28 Javascript
记录一次完整的react hooks实践
2019/03/11 Javascript
JavaScript ECMA-262-3 深入解析(一):执行上下文实例分析
2020/04/25 Javascript
微信小程序实现点击生成随机验证码
2020/09/09 Javascript
常用python编程模板汇总
2016/02/12 Python
13个最常用的Python深度学习库介绍
2017/10/28 Python
Queue 实现生产者消费者模型(实例讲解)
2017/11/13 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
2018/04/20 Python
Python从数据库读取大量数据批量写入文件的方法
2018/12/10 Python
python 模拟银行转账功能过程详解
2019/08/06 Python
Python 类的魔法属性用法实例分析
2019/11/21 Python
Python常用模块sys,os,time,random功能与用法实例分析
2020/01/07 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
2020/03/19 Python
Python基础教程(一)——Windows搭建开发Python开发环境
2020/07/20 Python
python+playwright微软自动化工具的使用
2021/02/02 Python
浅谈HTML5新增及移除的元素
2016/06/27 HTML / CSS
奖学金自我鉴定范文
2013/10/03 职场文书
运动会400米加油稿(8篇)
2014/09/22 职场文书
2015大学生党员自我评价范文
2015/03/03 职场文书
会计求职简历自我评价
2015/03/10 职场文书
律政俏佳人观后感
2015/06/09 职场文书