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


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

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

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

Tags in this post...

面试题 相关文章推荐
List, Set, Map是否继承自Collection接口?
May 16 面试题
简单说说tomcat的配置
May 28 面试题
写一个函数返回1+2+3+…+n的值(假定结果不会超过长整型变量的范围)
Sep 05 面试题
为数据库创建索引都需要注意些什么
Jul 17 面试题
Javascript如何发送一个Ajax请求
Jan 26 面试题
什么是Smart Navigation?
Jul 03 面试题
.NET是怎么支持多种语言的
Feb 24 面试题
星空联盟C# .net笔试题
Dec 05 面试题
linux面试题参考答案(1)
Jan 22 面试题
介绍一下Linux内核的排队自旋锁
Aug 27 面试题
WebSphere面试题:在WebSphere里面如何部署一个应用
Aug 02 面试题
Java程序员面试题
Sep 27 面试题
简述安装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
评分9.0以上的动画电影,剧情除了经典还很燃
2020/03/04 日漫
杏林同学录(三)
2006/10/09 PHP
PHPMailer安装方法及简单实例
2008/11/25 PHP
PHP DataGrid 实现代码
2009/08/12 PHP
腾讯QQ微博API接口获取微博内容
2013/10/30 PHP
php多线程实现方法及用法实例详解
2015/10/26 PHP
PHP类的自动加载与命名空间用法实例分析
2020/06/05 PHP
用htc组件制作windows选项卡
2007/01/13 Javascript
基于prototype扩展的JavaScript常用函数库
2010/11/30 Javascript
jqGrid jQuery 表格插件测试代码
2011/08/23 Javascript
基于jquery实现点击左右按钮图片横向滚动
2013/04/11 Javascript
javascript(js)的小数点乘法除法问题详解
2014/03/07 Javascript
vue数组对象排序的实现代码
2018/06/20 Javascript
[38:40]2018DOTA2亚洲邀请赛 4.6淘汰赛 mineski vs LGD 第一场
2018/04/10 DOTA
[55:48]VGJ.S vs TNC Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
Python自定义scrapy中间模块避免重复采集的方法
2015/04/07 Python
Python的gevent框架的入门教程
2015/04/29 Python
python 捕获 shell/bash 脚本的输出结果实例
2017/01/04 Python
python pandas 对series和dataframe的重置索引reindex方法
2018/06/07 Python
python 定时器,轮询定时器的实例
2019/02/20 Python
python matplotlib中的subplot函数使用详解
2020/01/19 Python
使用tensorflow进行音乐类型的分类
2020/08/14 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
2020/09/23 Python
Pycharm如何自动生成头文件注释
2020/11/14 Python
不可轻视HTML5!App三年内将被html5顶替彻底消失
2015/11/18 HTML / CSS
Expedia泰国:预订机票、酒店和旅游包(航班+酒店)
2016/09/27 全球购物
英国香水店:The Perfume Shop
2017/03/27 全球购物
建筑工程专业学生的自我评价
2013/12/25 职场文书
打架检讨书50字
2014/01/11 职场文书
公司委托书范本5篇
2014/09/20 职场文书
2014年幼儿园德育工作总结
2014/12/17 职场文书
应届生简历自我评价
2015/03/11 职场文书
浅谈Redis存储数据类型及存取值方法
2021/05/08 Redis
Python pandas之求和运算和非空值个数统计
2021/08/07 Python
Win11安装受阻怎么办? Windows11安装问题与解决方案汇总
2021/11/21 数码科技
MySQL 数据 data 基本操作
2022/05/04 MySQL