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


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

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

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

Tags in this post...

面试题 相关文章推荐
什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?
Mar 14 面试题
面向对象编程是如何提高软件开发水平的
May 06 面试题
存储过程的优缺点是什么
Jan 10 面试题
创建索引时需要注意的事项
May 13 面试题
什么是View State?
Jan 27 面试题
const和static readonly区别
May 20 面试题
Linux文件操作命令都有哪些
Feb 27 面试题
GWT的应用有哪两种部署模式
Dec 21 面试题
Java如何读取CLOB字段
Oct 10 面试题
灵泰克Java笔试题
Jan 09 面试题
一套英文Java笔试题面试题
Apr 21 面试题
95%的面试官都会问到的50道Java线程题,附答案
Aug 03 面试题
简述安装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
让PHP开发者事半功倍的十大技巧小结
2010/04/20 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
深入解析PHP的Yii框架中的event事件机制
2016/03/17 PHP
PHP实现获取ip地址的5种方法,以及插入用户登录日志操作示例
2019/02/28 PHP
php遍历目录下文件并按修改时间排序操作示例
2019/07/12 PHP
input、button的不同type值在ajax提交表单时导致的陷阱
2009/02/24 Javascript
JQuery从头学起第三讲
2010/07/06 Javascript
aspx中利用js实现确认删除代码
2010/07/22 Javascript
JavaScript游戏之优化篇
2010/11/08 Javascript
javascript:void(0)是什么意思示例介绍
2013/11/17 Javascript
IE、FF浏览器下修改标签透明度
2014/01/28 Javascript
jQuery构造函数init参数分析
2015/05/13 Javascript
javascript删除元素节点removeChild()用法实例
2015/05/26 Javascript
使用js复制链接中的部分文字的方法
2015/07/30 Javascript
JavaScript常用标签和方法总结
2015/09/01 Javascript
jQuery插件jquery-barcode实现条码打印的方法
2015/11/25 Javascript
微信小程序-获得用户输入内容
2017/02/13 Javascript
bootstrapvalidator之API学习教程
2017/06/29 Javascript
详解vue axios中文文档
2017/09/12 Javascript
Express使用html模板的详细代码
2017/09/18 Javascript
使用vue-cli脚手架工具搭建vue-webpack项目
2019/01/14 Javascript
vue实现移动端省市区选择
2019/09/27 Javascript
vue中如何添加百度统计代码
2020/12/19 Vue.js
[02:40]DOTA2超级联赛专访430 从小就爱玩对抗性游戏
2013/06/18 DOTA
[03:55]TI9战队采访——TNC Predator
2019/08/22 DOTA
python函数形参用法实例分析
2015/08/04 Python
Python模拟登陆淘宝并统计淘宝消费情况的代码实例分享
2016/07/04 Python
pandas DataFrame数据转为list的方法
2018/04/11 Python
Python中logging实例讲解
2019/01/17 Python
Python 3.8中实现functools.cached_property功能
2019/05/29 Python
python实现两个一维列表合并成一个二维列表
2019/12/02 Python
python 实现在shell窗口中编写print不向屏幕输出
2020/02/19 Python
Idea安装python显示无SDK问题解决方案
2020/08/12 Python
Python爬取你好李焕英豆瓣短评生成词云的示例代码
2021/02/24 Python
2014年工作总结与下年工作计划
2014/11/27 职场文书