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


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

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

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

Tags in this post...

面试题 相关文章推荐
PHP如何防止SQL注入
May 03 面试题
Yahoo-PHP面试题4
May 05 面试题
阿尔卡特(中国)的面试题目
Aug 20 面试题
计算s=f(f(-1.4))的值
May 06 面试题
写一个在SQL Server创建表的SQL语句
Mar 10 面试题
Oracle的内存结构(Memory structures)
Jun 10 面试题
了解AppleTalk协议吗
Apr 01 面试题
Linux内核的同步机制是什么?主要有哪几种内核锁
Jul 11 面试题
灵泰克Java笔试题
Jan 09 面试题
如何在Shell脚本中使用函数
Sep 06 面试题
JSF的标签库有哪些
Apr 27 面试题
J2EE包括哪些技术
Nov 25 面试题
简述安装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控制用户的浏览器--ob*函数的使用说明
2007/03/16 PHP
网页游戏开发入门教程二(游戏模式+系统)
2009/11/02 PHP
PHP Stream_*系列函数
2010/08/01 PHP
PHP在不同页面间传递Json数据示例代码
2013/06/08 PHP
不用MOUSEMOVE也能滑动啊
2007/05/23 Javascript
jquery的ajax从纯真网(cz88.net)获取IP地址对应地区名
2009/12/02 Javascript
javascript怎么禁用浏览器后退按钮
2014/03/27 Javascript
JavaScript实现基于十进制的四舍五入实例
2015/07/17 Javascript
jquery实现界面无刷新加载登陆注册
2016/07/30 Javascript
js获取页面引用的css样式表中的属性值方法(推荐)
2016/08/19 Javascript
详解Vue微信公众号开发踩坑全记录
2017/08/21 Javascript
JavaScript学习笔记之函数记忆
2017/09/06 Javascript
nodejs 日志模块winston的使用方法
2018/05/02 NodeJs
[06:11]2014DOTA2国际邀请赛 专访团结一心的VG战队
2014/07/21 DOTA
[02:49]2018DOTA2亚洲邀请赛主赛事决赛日战况回顾 Mineski鏖战5局夺得辉耀
2018/04/10 DOTA
[43:18]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.22
2019/09/05 DOTA
python分割文件的常用方法
2014/11/01 Python
python整小时 整天时间戳获取算法示例
2019/02/20 Python
详解python校验SQL脚本命名规则
2019/03/22 Python
Python求正态分布曲线下面积实例
2019/11/20 Python
Python numpy.zero() 初始化矩阵实例
2019/11/27 Python
python 二维矩阵转三维矩阵示例
2019/11/30 Python
安装多个版本的TensorFlow的方法步骤
2020/04/21 Python
Python reques接口测试框架实现代码
2020/07/28 Python
在Python3.74+PyCharm2020.1 x64中安装使用Kivy的详细教程
2020/08/07 Python
PyCharm 光标变成黑块的解决方式
2021/02/06 Python
Charlotte Tilbury英国官网:英国彩妆品牌
2017/05/26 全球购物
Geekbuying波兰:购买中国电子产品
2019/10/20 全球购物
医学生个人求职信范文
2013/09/24 职场文书
一年级小学生评语
2014/04/22 职场文书
认购协议书范本
2014/04/22 职场文书
党的群众路线教育实践活动对照检查材料(个人)
2014/09/24 职场文书
2014年涉外离婚协议书范本
2014/11/20 职场文书
2014年校务公开工作总结
2014/12/18 职场文书
感恩教育观后感
2015/06/17 职场文书
动视暴雪取消疫苗禁令 让所有员工返回线下工作
2022/04/03 其他游戏