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


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

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

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

Tags in this post...

面试题 相关文章推荐
我想声明一个指针并为它分配一些空间, 但却不行。这些代码有什么 问题?char *p; *p = malloc(10);
Oct 06 面试题
金蝶的一道SQL笔试题
Dec 18 面试题
C# Debug和Testing相关面试题
Oct 25 面试题
Linux操作面试题
May 16 面试题
非功能性需求都包括哪些方面
Oct 29 面试题
Prototype如何实现页面局部定时刷新
Aug 06 面试题
什么是lambda函数
Sep 17 面试题
String s = new String(“xyz”);创建了几个String Object?
Aug 05 面试题
Final类有什么特点
Apr 25 面试题
Boolean b = new Boolean(“abcde”); 会编译错误码
Nov 27 面试题
Shell脚本如何向终端输出信息
Apr 25 面试题
Servlet方面面试题
Sep 28 面试题
简述安装Slackware Linux系统的过程
Jan 12 #面试题
介绍一下Linux内核的排队自旋锁
Jan 04 #面试题
Windows和Linux动态库应用异同
Apr 17 #面试题
linux面试题参考答案(9)
Jan 07 #面试题
linux面试题参考答案(8)
Apr 19 #面试题
linux面试题参考答案(7)
Oct 29 #面试题
linux面试题参考答案(6)
Jun 23 #面试题
You might like
如何使用PHP往windows中添加用户
2006/12/06 PHP
PHP实现采集程序原理和简单示例代码
2007/03/18 PHP
php addslashes 函数详细分析说明
2009/06/23 PHP
PHP session_start()问题解疑(详细介绍)
2013/07/05 PHP
PHP中$_FILES的使用方法及注意事项说明
2014/02/14 PHP
兼容各大浏览器带关闭按钮的漂浮多组图片广告代码
2014/06/05 PHP
js单向链表的具体实现实例
2013/06/21 Javascript
jquery实现的随机多彩tag标签随机颜色和字号大小效果
2014/03/27 Javascript
吐槽一下我所了解的Node.js
2014/10/08 Javascript
JQuery勾选指定name的复选框集合并显示的方法
2015/05/18 Javascript
浅谈JavaScript对象与继承
2016/07/10 Javascript
fullpage.js全屏滚动插件使用实例
2016/09/06 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
2017/03/21 Javascript
VUE利用vuex模拟实现新闻点赞功能实例
2017/06/28 Javascript
Bootstrap滚动监听组件scrollspy.js使用方法详解
2017/07/20 Javascript
Typescript 中的 interface 和 type 到底有什么区别详解
2019/06/18 Javascript
vue2.0项目集成Cesium的实现方法
2019/07/30 Javascript
基于JavaScript获取base64图片大小
2019/10/18 Javascript
Vue el-autocomplete远程搜索下拉框并实现自动填充功能(推荐)
2019/10/25 Javascript
[00:10]神之谴戒
2019/03/06 DOTA
用python代码做configure文件
2014/07/20 Python
python画柱状图--不同颜色并显示数值的方法
2018/12/13 Python
Python对象与引用的介绍
2019/01/24 Python
python django中8000端口被占用的解决
2019/12/17 Python
python函数enumerate,operator和Counter使用技巧实例小结
2020/02/22 Python
英国最大的邮寄种子和植物公司:Thompson & Morgan
2017/09/21 全球购物
年终自我鉴定
2013/10/09 职场文书
创业者是否需要商业计划书?
2014/02/07 职场文书
关于随地扔垃圾的检讨书
2014/09/30 职场文书
个人四风问题对照检查材料思想汇报
2014/10/06 职场文书
初婚初育证明范本
2014/11/24 职场文书
优秀班主任先进事迹材料
2014/12/16 职场文书
优秀员工推荐材料
2014/12/20 职场文书
董事长岗位职责
2015/02/13 职场文书
详解Python小数据池和代码块缓存机制
2021/04/07 Python
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/06 PostgreSQL