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


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

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

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

Tags in this post...

面试题 相关文章推荐
JPA面试常见问题
Nov 14 面试题
上海方立数码笔试题
Oct 18 面试题
输入N,打印N*N矩阵
Feb 20 面试题
函数指针的定义是什么
Aug 14 面试题
什么是聚集索引和非聚集索引
Jan 17 面试题
.NET remoting中对象激活的两种方式
Jun 08 面试题
shallow copy和deep copy的区别
May 09 面试题
Linux内核产生并发的原因
Nov 08 面试题
如何查看在weblogic中已经发布的EJB
Jun 01 面试题
EJB3推出JPA的原因
Oct 16 面试题
不同浏览器创建XMLHttpRequest方法有什么不同
Nov 17 面试题
Java基础知识面试题
Mar 25 面试题
简述安装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
zend framework多模块多布局配置
2011/02/26 PHP
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
2013/06/14 PHP
php基于Redis消息队列实现的消息推送的方法
2018/11/28 PHP
PHP7 弃用功能
2021/03/09 PHP
给页面渲染时间加速 干掉Dom Level 0 Event
2012/12/19 Javascript
JS中自定义定时器让它在某一时刻执行
2014/09/02 Javascript
原生JavaScript实现合并多个数组示例
2014/09/21 Javascript
基于socket.io+express实现多房间聊天
2016/03/17 Javascript
jQuery 实现双击编辑表格功能
2017/06/19 jQuery
详解layui中的树形关于取值传值问题
2018/01/16 Javascript
vue页面加载闪烁问题的解决方法
2018/03/28 Javascript
Vue 页面跳转不用router-link的实现代码
2018/04/12 Javascript
vue2.0 使用element-ui里的upload组件实现图片预览效果方法
2018/09/04 Javascript
JS实现简单的点赞与踩功能示例
2018/12/05 Javascript
详解javascript对数组和json数组的操作
2019/04/15 Javascript
CKeditor4 字体颜色功能配置方法教程
2019/06/26 Javascript
node读写Excel操作实例分析
2019/11/06 Javascript
原生JS与CSS实现软件卸载对话框功能
2019/12/05 Javascript
javascript设计模式 ? 解释器模式原理与用法实例分析
2020/04/17 Javascript
[02:15]你好,这就是DOTA!
2015/08/05 DOTA
[59:48]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第一场 1月26日
2021/03/11 DOTA
python生成tensorflow输入输出的图像格式的方法
2018/02/12 Python
Python中利用xpath解析HTML的方法
2018/05/14 Python
浅谈python函数调用返回两个或多个变量的方法
2019/01/23 Python
将自己的数据集制作成TFRecord格式教程
2020/02/17 Python
基于python 取余问题(%)详解
2020/06/03 Python
解决导入django_filters不成功问题No module named 'django_filter'
2020/07/15 Python
IE浏览器单独写CSS样式的几种方法
2014/10/14 HTML / CSS
HTML5学习心得总结(推荐)
2016/07/08 HTML / CSS
C/C++程序员常见面试题二
2015/11/19 面试题
高三英语复习计划
2015/01/19 职场文书
销售员岗位职责
2015/02/10 职场文书
检讨书模板大全
2015/05/07 职场文书
远程教育培训心得体会
2016/01/09 职场文书
学会用Python实现滑雪小游戏,再也不用去北海道啦
2021/05/20 Python
修改MySQL的数据库引擎为INNODB的方法
2021/05/26 MySQL