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


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

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

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

Tags in this post...

面试题 相关文章推荐
Java和Javasciprt的区别
Sep 02 面试题
Ibatis如何调用存储过程
May 15 面试题
怎样从/向数据文件读/写结构
Nov 23 面试题
以思科路由器为例你写下单臂路由的配置命令
Aug 03 面试题
开放系统互连参考模型
Jun 29 面试题
能否解释一下XSS cookie盗窃是什么意思
Jun 02 面试题
某公司C#程序员面试题笔试题
May 26 面试题
介绍一下write命令
Aug 10 面试题
测试驱动开发的主要步骤是什么
Dec 10 面试题
EJB的激活机制
Oct 25 面试题
MYSQL基础面试题
May 13 面试题
介绍一下Mysql的存储引擎
Feb 12 面试题
简述安装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 Memcached + APC + 文件缓存封装实现代码
2010/03/11 PHP
php+mysql结合Ajax实现点赞功能完整实例
2015/01/30 PHP
php使用变量动态创建类的对象用法示例
2017/02/06 PHP
yii2利用自带UploadedFile实现上传图片的示例
2017/02/16 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
Javascript学习笔记之 对象篇(一) : 对象的使用和属性
2014/06/24 Javascript
jquery实现动画菜单的左右滚动、渐变及图形背景滚动等效果
2015/08/25 Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
2015/09/07 Javascript
js实现纯前端的图片预览
2016/04/27 Javascript
全面解析Bootstrap中Carousel轮播的使用方法
2016/06/13 Javascript
移动适配的几种方案(三种方案)
2016/11/25 Javascript
JavaScript之创意时钟项目(实例讲解)
2017/10/23 Javascript
使用selenium抓取淘宝的商品信息实例
2018/02/06 Javascript
JavaScript作用域、闭包、对象与原型链概念及用法实例总结
2018/08/20 Javascript
JavaScript HTML DOM元素 节点操作汇总
2019/07/29 Javascript
解决layui表格内文本超出隐藏的问题
2019/09/12 Javascript
微信小程序修改数组长度的问题的解决
2019/12/17 Javascript
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
2020/01/16 Javascript
如何通过javaScript去除字符串两端的空白字符
2020/02/06 Javascript
简单了解Python下用于监视文件系统的pyinotify包
2015/11/13 Python
在centos7中分布式部署pyspider
2017/05/03 Python
基于Django模板中的数字自增(详解)
2017/09/05 Python
Html5新增标签与样式及让元素水平垂直居中
2019/07/11 HTML / CSS
城野医生官方海外旗舰店:风靡亚洲毛孔收敛水
2018/04/26 全球购物
如何通过 CSS 写出火焰效果
2021/03/24 HTML / CSS
如何写毕业求职自荐信
2013/11/06 职场文书
机电一体化专业应届生求职信
2013/11/27 职场文书
知名企业招聘广告词大全
2014/03/18 职场文书
党支部承诺书范文
2014/03/28 职场文书
小学教师寄语大全
2014/04/03 职场文书
煤矿安全生产责任书
2014/04/15 职场文书
户籍证明模板
2014/09/28 职场文书
复兴之路展览观后感
2015/06/02 职场文书
Python进阶学习之带你探寻Python类的鼻祖-元类
2021/05/08 Python
实例详解Python的进程,线程和协程
2022/03/13 Python
Vue.Draggable实现交换位置
2022/04/07 Vue.js