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


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

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

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

Tags in this post...

面试题 相关文章推荐
mysql_pconnect()和mysql_connect()有什么区别
May 25 面试题
Eclipse面试题
Mar 22 面试题
声明struct x1 { . . . }; 和typedef struct { . . . }x2;有什么不同
Jun 02 面试题
什么是"引用"?申明和使用"引用"要注意哪些问题?
Mar 03 面试题
说一下mysql, oracle等常见数据库的分页实现方案
Sep 29 面试题
存储过程的优点有哪些
Sep 27 面试题
什么是SQL Server的确定性函数和不确定性函数
Aug 04 面试题
以太网Ethernet IEEE802.3
Aug 05 面试题
上海雨人软件技术开发有限公司测试题
Jul 14 面试题
String s = new String(“xyz”);创建了几个String Object?
Aug 05 面试题
日期和时间问题
Jan 04 面试题
中软国际Java程序员笔试题
Jul 19 面试题
简述安装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+mysqli使用面向对象方式查询数据库实例
2015/01/29 PHP
使用PHP编写发红包程序
2015/07/22 PHP
PHP中类属性与类静态变量的访问方法示例
2016/07/13 PHP
php实现当前页面点击下载文件的实例代码
2016/11/16 PHP
PHP xpath()函数讲解
2019/02/11 PHP
jQuery 注意事项 与原因分析
2009/04/24 Javascript
JS 各种网页尺寸判断实例方法
2013/04/18 Javascript
你必须知道的Javascript知识点之"this指针"的应用
2013/04/23 Javascript
JQ实现新浪游戏首页幻灯片
2015/07/29 Javascript
JavaScript编程的单例设计模讲解
2015/11/10 Javascript
基于CSS3和jQuery实现跟随鼠标方位的Hover特效
2016/07/25 Javascript
jquery判断iPhone、Android设备类型
2016/09/14 Javascript
Vue 组件的挂载与父子组件的传值实例
2020/09/02 Javascript
Vue表单提交点击事件只允许点击一次的实例
2020/10/23 Javascript
python fabric使用笔记
2015/05/09 Python
Python 3.x 连接数据库示例(pymysql 方式)
2017/01/19 Python
python爬虫之BeautifulSoup 使用select方法详解
2017/10/23 Python
浅谈用Python实现一个大数据搜索引擎
2017/11/28 Python
Python paramiko模块使用解析(实现ssh)
2019/08/30 Python
python实现复制大量文件功能
2019/08/31 Python
python输入错误后删除的方法
2019/10/12 Python
numpy.transpose()实现数组的转置例子
2019/12/02 Python
Python绘制三角函数图(sin\cos\tan)并标注特定范围的例子
2019/12/04 Python
python上传时包含boundary时的解决方法
2020/04/08 Python
使用python实现CGI环境搭建过程解析
2020/04/28 Python
python 使用多线程创建一个Buffer缓存器的实现思路
2020/07/02 Python
python给list排序的简单方法
2020/12/10 Python
CSS3中线性颜色渐变的一些实现方法
2015/07/14 HTML / CSS
欧洲领先的电子和电信零售商和服务提供商:Currys PC World Business
2017/12/05 全球购物
乌克兰的第一家手表店:Deka
2020/03/05 全球购物
大学毕业生通用求职信
2013/09/28 职场文书
高三毕业生自我鉴定
2013/12/20 职场文书
《放飞蜻蜓》教学反思
2014/04/27 职场文书
捐款倡议书格式范文
2014/05/14 职场文书
公务员检讨书
2014/11/01 职场文书
详细谈谈MYSQL中的COLLATE是什么
2021/06/11 MySQL