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


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

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

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

Tags in this post...

面试题 相关文章推荐
JDO的含义
Nov 17 面试题
异常和异常类的概念
Sep 12 面试题
简述数组与指针的区别
Jan 02 面试题
为什么UNION ALL比UNION快
Mar 17 面试题
什么是表空间(tablespace)和系统表空间(System tablespace)
Feb 25 面试题
.net笔试题
Mar 03 面试题
武汉东之林科技有限公司机试
Sep 17 面试题
什么是WEB控件?使用WEB控件有哪些优势?
Jan 21 面试题
抽象类和接口的区别
Sep 19 面试题
几个Linux面试题笔试题
Dec 01 面试题
程序员经常用到的UNIX命令
Apr 13 面试题
什么是ESB?请介绍一下ESB?
May 27 面试题
简述安装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使用mkdir创建多级目录入门例子
2014/05/10 PHP
php中 ob_start等函数截取标准输出的方法
2015/06/22 PHP
Thinkphp5.0 框架Model模型简单用法分析
2019/10/11 PHP
javascript 写类方式之四
2009/07/05 Javascript
Javascript+XMLHttpRequest+asp.net无刷新读取数据库数据
2009/08/09 Javascript
使用jQuery validate 验证注册表单实例演示
2013/03/25 Javascript
等待指定时间后自动跳转或关闭当前页面的js代码
2013/07/09 Javascript
将list转换为json失败的原因
2013/12/17 Javascript
js判断横竖屏及禁止浏览器滑动条示例
2014/04/29 Javascript
学习JavaScript设计模式(封装)
2015/11/26 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
js HTML5手机刮刮乐代码
2020/09/29 Javascript
JavaScript ES6箭头函数使用指南
2018/12/30 Javascript
vue选项卡切换登录方式小案例
2019/09/27 Javascript
js中的面向对象之对象常见创建方法详解
2019/12/16 Javascript
JavaScript canvas实现跟随鼠标事件
2020/02/10 Javascript
Element InfiniteScroll无限滚动的具体使用方法
2020/07/27 Javascript
用python + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
2014/07/14 Python
Python格式化css文件的方法
2015/03/10 Python
使用python爬虫实现网络股票信息爬取的demo
2018/01/05 Python
PyCharm下载和安装详细步骤
2019/12/17 Python
Python:type、object、class与内置类型实例
2019/12/25 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
Django 项目通过加载不同env文件来区分不同环境
2020/02/17 Python
Python进行统计建模
2020/08/10 Python
教你如何用python操作摄像头以及对视频流的处理
2020/10/12 Python
Omio意大利:全欧洲低价大巴、火车和航班搜索和比价
2017/12/02 全球购物
澳大利亚自然和有机的健康美容产品一站式商店:Ziani Beauty
2017/12/28 全球购物
自我鉴定怎么写
2013/12/05 职场文书
《小石潭记》教学反思
2014/02/13 职场文书
关于环保的建议书
2014/05/12 职场文书
行政主管岗位职责范本
2015/04/09 职场文书
读《瓦尔登湖》有感:每个人都需要一个瓦尔登湖
2019/10/17 职场文书
祝福语集锦:送给毕业同学祝福语
2019/11/21 职场文书
80行代码写一个Webpack插件并发布到npm
2021/05/24 Javascript
Vue.js中v-for指令的用法介绍
2022/03/13 Vue.js