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


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

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

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

Tags in this post...

面试题 相关文章推荐
什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?
Mar 14 面试题
新东网科技Java笔试题
Jul 13 面试题
我想声明一个指针并为它分配一些空间, 但却不行。这些代码有什么 问题?char *p; *p = malloc(10);
Oct 06 面试题
Android面试宝典
Aug 06 面试题
SQL语言面试题
Aug 27 面试题
天游软件面试
Nov 23 面试题
写一个在SQL Server创建表的SQL语句
Mar 10 面试题
如果一个类实现了多个接口但是这些接口有相同的方法名将会怎样
Jun 16 面试题
别名指示符是什么
Oct 08 面试题
介绍一下linux文件系统分配策略
Nov 17 面试题
什么是SCM(软件配置管理)
Aug 16 面试题
金额转换,阿拉伯数字的金额转换成中国传统的形式如:(¥1011)-> (一千零一拾一元整)输出
May 29 面试题
简述安装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调用数据库的存贮过程
2006/10/09 PHP
使用eAccelerator加密PHP程序
2008/10/03 PHP
PHP is_dir() 判断给定文件名是否是一个目录
2010/05/10 PHP
Laravel4中的Validator验证扩展用法详解
2016/07/26 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
2018/08/17 PHP
自定义Laravel (monolog)日志位置,并增加请求ID的实现
2019/10/17 PHP
jquery 常用操作整理 基础入门篇
2009/10/14 Javascript
js弹出的对话窗口永远保持居中显示
2012/12/15 Javascript
打印json对象的内容及JSON.stringify函数应用
2013/03/29 Javascript
javascript的创建多行字符串的7种方法
2014/04/29 Javascript
jquery 3D 标签云示例代码
2014/06/12 Javascript
深入理解JavaScript系列(48):对象创建模式(下篇)
2015/03/04 Javascript
javascript为按钮注册回车事件(设置默认按钮)的方法
2015/05/09 Javascript
浅谈javascript获取元素transform参数
2015/07/24 Javascript
JS实现转动随机数抽奖特效代码
2020/04/16 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
2016/02/15 Javascript
基于javascript实现文字无缝滚动效果
2016/03/22 Javascript
微信小程序 天气预报开发实例代码源码
2017/01/20 Javascript
js中变量的连续赋值(实例讲解)
2017/07/08 Javascript
浅析JS抽象工厂模式
2017/12/14 Javascript
vue指令只能输入正数并且只能输入一个小数点的方法
2018/06/08 Javascript
微信小程序异步API为Promise简化异步编程的操作方法
2018/08/14 Javascript
新手入门带你学习JavaScript引擎运行原理
2019/06/24 Javascript
浅谈laytpl 模板空值显示null的解决方法及简单的js表达式
2019/09/19 Javascript
[00:36]TI7不朽珍藏III——斯温不朽展示
2017/07/15 DOTA
[40:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Liquid vs TNC
2018/04/01 DOTA
python三方库之requests的快速上手
2019/03/04 Python
python求最大值最小值方法总结
2019/06/25 Python
Python shutil模块用法实例分析
2019/10/02 Python
英国第二大营养品供应商:Vitabiotics
2016/10/01 全球购物
怎样客观的做好自我评价
2013/12/28 职场文书
低碳日宣传活动总结
2014/07/09 职场文书
平面设计专业求职信
2014/08/09 职场文书
商务邀请函
2015/01/30 职场文书
Vue Element plus使用方法梳理
2022/12/24 Vue.js