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


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

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

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

Tags in this post...

面试题 相关文章推荐
如何在存储过程中使用Loop
Jan 05 面试题
如何高效率的查找一个月以内的数据
Apr 15 面试题
.NET面试10题
Feb 24 面试题
常用UNIX 命令(Linux的常用命令)
Jul 10 面试题
50道外企软件测试面试题
Aug 18 面试题
软件配置管理有什么好处
Apr 15 面试题
如果有两个类A,B,怎么样才能使A在发生一个事件的时候通知B
Mar 12 面试题
写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔
Jul 30 面试题
JAVA中运算符的分类及举例
Sep 12 面试题
正隆泰信息技术有限公司上机题
Jun 14 面试题
Java中采用什么结构来捕获、处理异常?各子句的顺序、功能如何
Oct 07 面试题
介绍一下javax.servlet.Servlet接口及其主要方法
Nov 30 面试题
简述安装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/11/25 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
2017/03/28 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
2018/04/20 PHP
javascript对象的property和prototype是这样一种关系
2007/03/24 Javascript
XMLHTTPRequest的属性和方法简介
2010/11/23 Javascript
JavaScript中的类继承
2010/11/25 Javascript
JQuery入门——事件切换之toggle()方法应用介绍
2013/02/05 Javascript
jquery.cookie() 方法的使用(读取、写入、删除)
2013/12/05 Javascript
2014 HTML5/CSS3热门动画特效TOP10
2014/12/07 Javascript
jquery处理页面弹出层查询数据等待操作实例
2015/03/25 Javascript
jquery css实现邮箱自动补全
2016/11/14 Javascript
利用JS实现简单的瀑布流加载图片效果
2017/04/22 Javascript
Vue0.1的过滤代码如何添加到Vue2.0直接使用
2017/08/23 Javascript
浅谈Koa2框架利用CORS完成跨域ajax请求
2018/03/06 Javascript
Mint-UI时间组件起始时间问题及时间插件使用
2018/08/20 Javascript
使用vue构建多页面应用的示例
2020/10/22 Javascript
[05:08]第一届“网鱼杯”DOTA2比赛精彩集锦
2014/09/05 DOTA
[02:12]2015国际邀请赛 SHOWOPEN
2015/08/05 DOTA
Python基于生成器迭代实现的八皇后问题示例
2018/05/23 Python
python实现音乐下载的统计
2018/06/20 Python
Python django搭建layui提交表单,表格,图标的实例
2019/11/18 Python
完美解决jupyter由于无法import新包的问题
2020/05/26 Python
将pycharm配置为matlab或者spyder的用法说明
2020/06/08 Python
使用Keras实现Tensor的相乘和相加代码
2020/06/18 Python
Python如何读写CSV文件
2020/08/13 Python
详解Pytorch显存动态分配规律探索
2020/11/17 Python
阿玛尼美妆英国官网:Giorgio Armani Beauty英国
2019/03/28 全球购物
RUIFIER官网:英国奢侈高级珠宝品牌
2020/06/12 全球购物
演讲稿怎么写
2014/01/07 职场文书
大学四年的个人自我评价
2014/01/14 职场文书
新年主持词
2014/03/27 职场文书
先进事迹报告会主持词
2014/04/02 职场文书
作风转变心得体会
2014/09/02 职场文书
财务年终工作总结大全
2019/06/20 职场文书
导游词之铁岭象牙山
2019/12/06 职场文书
vue ant design 封装弹窗表单的使用
2022/06/01 Vue.js