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


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

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

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

Tags in this post...

面试题 相关文章推荐
PHP面试题大全
Oct 16 面试题
天逸系统(武汉)有限公司Java笔试题
Dec 29 面试题
在C语言中实现抽象数据类型什么方法最好
Jun 26 面试题
C语言编程练习
Apr 02 面试题
实现strstr功能,即在父串中寻找子串首次出现的位置
Aug 05 面试题
一套带网友答案的.NET笔试题
Dec 06 面试题
介绍一下ICMP(Internet Control Message Protocol)Internet控制信息协议
Nov 26 面试题
以思科路由器为例你写下单臂路由的配置命令
Aug 03 面试题
How to spawning asynchronous work in J2EE
Aug 29 面试题
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
Mar 23 面试题
日期和时间问题
Jan 04 面试题
值传递还是引用传递
Feb 08 面试题
简述安装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
根德Grundig S400/S500/S700电路分析
2021/03/02 无线电
php获取qq用户昵称和在线状态(实例分析)
2013/10/27 PHP
php通过执行CutyCapt命令实现网页截图的方法
2016/09/30 PHP
php表单文件iframe异步上传实例讲解
2017/07/26 PHP
PHP+Apache环境中如何隐藏Apache版本
2017/11/24 PHP
聊聊 PHP 8 新特性 Attributes
2020/08/19 PHP
js宝典学习笔记(上)
2007/01/10 Javascript
JS使用for循环遍历Table的所有单元格内容
2014/08/21 Javascript
用console.table()调试javascript
2014/09/04 Javascript
浅谈jquery.fn.extend与jquery.extend区别
2015/07/13 Javascript
使用jQuery的easydrag插件实现可拖动的DIV弹出框
2016/02/19 Javascript
JS实现简单易用的手机端浮动窗口显示效果
2016/09/07 Javascript
Vue 2.X的状态管理vuex记录详解
2017/03/23 Javascript
快速将Vue项目升级到webpack3的方法步骤
2017/09/14 Javascript
canvas轨迹回放功能实现
2017/12/20 Javascript
解析Vue.js中的组件
2018/02/02 Javascript
vuex + axios 做登录验证 并且保存登录状态的实例
2018/09/16 Javascript
微信小程序学习笔记之登录API与获取用户信息操作图文详解
2019/03/29 Javascript
基于nodejs的微信JS-SDK简单应用实现
2019/05/21 NodeJs
node.js Promise对象的使用方法实例分析
2019/12/26 Javascript
vue element 关闭当前tab 跳转到上一路由操作
2020/07/22 Javascript
详谈vue中router-link和传统a链接的区别
2020/07/22 Javascript
vue 单页应用和多页应用的优劣
2020/10/22 Javascript
JavaScript中条件语句的优化技巧总结
2020/12/04 Javascript
python实现数独算法实例
2015/06/09 Python
python监控进程脚本
2018/04/12 Python
python之Flask实现简单登录功能的示例代码
2018/12/24 Python
学生信息管理系统Python面向对象版
2019/01/30 Python
python实现图片压缩代码实例
2019/08/12 Python
Python PO设计模式的具体使用
2019/08/16 Python
Python requests HTTP验证登录实现流程
2020/11/05 Python
基于Python爬取搜狐证券股票过程解析
2020/11/18 Python
html5教程制作简单画板代码分享
2013/12/04 HTML / CSS
Antonioli美国在线商店:时尚前卫奢华
2019/07/29 全球购物
爱我中华演讲稿
2014/05/20 职场文书
辞职信的写法
2015/02/27 职场文书