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


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

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

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

Tags in this post...

面试题 相关文章推荐
Web Service面试题:如何搭建Axis2的开发环境
Jun 20 面试题
网络、C以及其他硬件方面的面试题
Aug 23 面试题
下述程序的作用是计算机数组中的最大元素值及其下标
Nov 26 面试题
介绍一下#error预处理
Sep 25 面试题
命名空间(namespace)和程序集(Assembly)有什么区别
Sep 25 面试题
WEB控件及HTML服务端控件能否调用客户端方法?如果能,请解释如何调用?
Aug 25 面试题
如何为DataGridView添加一个定制的Column Type
Jan 21 面试题
C#中类(class)与结构(struct)的异同
Nov 03 面试题
linux系统都有哪些运行级别
Apr 15 面试题
Linux的文件类型
Mar 07 面试题
Java面试笔试题大全
Nov 23 面试题
Promise面试题详解之控制并发
May 14 面试题
简述安装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读取html并截取字符串的简单代码
2009/11/30 PHP
PHP生成压缩文件实例
2015/02/07 PHP
PHP数组去重比较快的实现方式
2016/01/19 PHP
PHP读取大文件的多种方法介绍
2016/04/04 PHP
php与python实现的线程池多线程爬虫功能示例
2016/10/12 PHP
javascript 另一种图片滚动切换效果思路
2012/04/20 Javascript
javascript计算星座属相(十二生肖属相)示例代码
2014/01/09 Javascript
详解maxlength属性在textarea里奇怪的表现
2015/12/27 Javascript
jQuery图片切换动画特效
2016/11/02 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
2016/12/08 Javascript
微信小程序 PHP后端form表单提交实例详解
2017/01/12 Javascript
canvas实现探照灯效果
2017/02/07 Javascript
angularJS之$http:与服务器交互示例
2017/03/17 Javascript
VueJS如何引入css或者less文件的一些坑
2017/04/25 Javascript
微信小程序form表单组件示例代码
2018/07/15 Javascript
Jquery的Ajax技术使用方法
2019/01/21 jQuery
JavaScript中CreateTextFile函数
2020/08/30 Javascript
一起来了解一下JavaScript的预编译(小结)
2021/03/01 Javascript
Python里disconnect UDP套接字的方法
2015/04/23 Python
Python命名空间的本质和加载顺序
2018/12/17 Python
Python 串口读写的实现方法
2019/06/12 Python
python 中的paramiko模块简介及安装过程
2020/02/29 Python
python 将视频 通过视频帧转换成时间实例
2020/04/23 Python
使用Python实现将多表分批次从数据库导出到Excel
2020/05/15 Python
使用ITK-SNAP进行抠图操作并保存mask的实例
2020/07/01 Python
使用tensorflow进行音乐类型的分类
2020/08/14 Python
Lenox官网:精美的瓷器&独特的礼品
2017/02/12 全球购物
介绍一下Transact-SQL中SPACE函数的用法
2015/09/01 面试题
英文自荐信常用句子
2014/03/26 职场文书
公证书格式
2015/01/23 职场文书
中小学生安全教育观后感
2015/06/17 职场文书
2015年秋季学校开学标语
2015/07/16 职场文书
百年校庆感言
2015/08/01 职场文书
教育教学工作反思
2016/02/24 职场文书
未来,这5大方向都很适合创业
2019/07/22 职场文书
HTML+CSS+JS实现图片的瀑布流布局的示例代码
2021/04/22 HTML / CSS