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


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

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

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

Tags in this post...

面试题 相关文章推荐
用JAVA SOCKET编程,读服务器几个字符,再写入本地显示
Nov 25 面试题
Java 中访问数据库的步骤?Statement 和PreparedStatement 之间的区别?
Jun 05 面试题
Java多态性的定义以及类型
Sep 16 面试题
广州御银科技股份有限公司试卷(C++)
Nov 04 面试题
strstr()的简单实现
Sep 26 面试题
解释一下Windows的消息机制
Jan 30 面试题
几个Linux面试题笔试题
Dec 01 面试题
如何利用XMLHTTP检测URL及探测服务器信息
Nov 10 面试题
Ajxa常见问题都有哪些
Mar 26 面试题
Python如何定义一个函数
Sep 01 面试题
简单叙述一下MYSQL的优化
May 09 面试题
Java基础面试题
Nov 02 面试题
简述安装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编程语言开发动态WAP页面
2006/10/09 PHP
那些年一起学习的PHP(三)
2012/03/22 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
PHP基于swoole多进程操作示例
2019/08/12 PHP
Laravel框架之解决前端显示图片问题
2019/10/24 PHP
JavaScript学习点滴 call、apply的区别
2010/10/22 Javascript
Extjs Gird 支持中文拼音排序实现代码
2013/04/15 Javascript
放弃用你的InnerHTML来输出HTML吧 jQuery Tmpl不详细讲解
2013/04/20 Javascript
JS设置获取cookies的方法
2014/01/26 Javascript
JS的事件绑定深入认识
2014/06/26 Javascript
js实现的牛顿摆效果
2015/03/31 Javascript
JavaScript使用encodeURI()和decodeURI()获取字符串值的方法
2015/08/04 Javascript
第二章之Bootstrap 页面排版样式
2016/04/25 Javascript
Bootstrap表单布局样式源代码
2016/07/04 Javascript
jQuery实现div横向拖拽排序的简单实例
2016/07/13 Javascript
详解React-Todos入门例子
2016/11/08 Javascript
JavaScript中数组常见操作技巧
2017/09/01 Javascript
js中apply与call简单用法详解
2017/11/06 Javascript
js实现下拉框二级联动
2018/12/04 Javascript
VUE项目初建和常见问题总结
2019/09/12 Javascript
vue.js实现简单的计算器功能
2020/02/22 Javascript
JS关闭子窗口并且刷新上一个窗口的实现示例
2020/03/10 Javascript
在react中使用vue的状态管理的方法示例
2020/05/02 Javascript
python list转dict示例分享
2014/01/28 Python
解决python3 HTMLTestRunner测试报告中文乱码的问题
2018/12/17 Python
python绘制规则网络图形实例
2019/12/09 Python
Python实现区域填充的示例代码
2021/02/03 Python
css 如何让背景图片拉伸填充避免重复显示
2013/07/11 HTML / CSS
自我鉴定范文300字
2013/10/01 职场文书
幼儿园大班教学反思
2014/02/10 职场文书
总裁助理岗位职责
2014/02/17 职场文书
党员四风自我剖析材料思想汇报
2014/09/13 职场文书
2014教师专业技术工作总结
2014/12/03 职场文书
医生辞职信范文
2015/03/02 职场文书
大学入学感言
2015/08/01 职场文书
Spring Boot 整合 Apache Dubbo的示例代码
2021/07/04 Java/Android