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


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

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

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

Tags in this post...

面试题 相关文章推荐
JNI的定义
Nov 25 面试题
一份Java笔试题
Feb 21 面试题
static全局变量与普通的全局变量有什么区别
May 27 面试题
程序运行正确, 但退出时却"core dump"了,怎么回事
Feb 19 面试题
这段代码难道不该打印出56吗
Feb 27 面试题
Linux面试题LINUX系统类
Nov 25 面试题
Linux常见面试题
Oct 04 面试题
介绍一下grep命令的使用
Jun 28 面试题
什么是设计模式
Jun 17 面试题
百度JavaScript笔试题
Jan 15 面试题
Java语言程序设计测试题选择题部分
Apr 03 面试题
Java程序员面试90题
Oct 19 面试题
简述安装Slackware Linux系统的过程
May 08 #面试题
介绍一下Linux内核的排队自旋锁
Aug 27 #面试题
Windows和Linux动态库应用异同
Jul 28 #面试题
linux面试题参考答案(9)
Jan 29 #面试题
linux面试题参考答案(8)
Aug 11 #面试题
linux面试题参考答案(7)
Jul 24 #面试题
linux面试题参考答案(6)
Aug 29 #面试题
You might like
PHP中=赋值操作符对不同数据类型的不同行为
2011/01/02 PHP
Ajax+PHP快速上手及简单应用说明
2013/07/24 PHP
php类中的各种拦截器用法分析
2014/11/03 PHP
fsockopen pfsockopen函数被禁用,SMTP发送邮件不正常的解决方法
2015/09/20 PHP
Yii 2.0实现联表查询加搜索分页的方法示例
2017/08/02 PHP
Mac下关于PHP环境和扩展的安装详解
2019/10/17 PHP
解读IE和firefox下JScript和HREF的执行顺序
2008/01/12 Javascript
JavaScript写的一个DIV 弹出网页对话框
2009/08/14 Javascript
原生js实现百叶窗效果及原理介绍
2016/04/12 Javascript
Angular2 环境配置详细介绍
2016/09/21 Javascript
js html5 css俄罗斯方块游戏再现
2016/10/17 Javascript
jquery插件ContextMenu设置右键菜单
2017/03/13 Javascript
浅谈手写node可读流之流动模式
2018/06/01 Javascript
解决循环中setTimeout执行顺序的问题
2018/06/20 Javascript
微信小程序之几种常见的弹框提示信息实现详解
2019/07/11 Javascript
jquery实现垂直手风琴菜单
2020/03/04 jQuery
基于javascript处理nginx请求过程详解
2020/07/07 Javascript
Vue实现移动端拖拽交换位置
2020/07/29 Javascript
微信小程序自定义底部弹出框动画
2020/11/18 Javascript
[36:17]DOTA2上海特级锦标赛 - VGL音乐会全集
2016/03/06 DOTA
处理Python中的URLError异常的方法
2015/04/30 Python
Python实现识别手写数字大纲
2018/01/29 Python
Python爬虫设置代理IP的方法(爬虫技巧)
2018/03/04 Python
Django objects的查询结果转化为json的三种方式的方法
2018/11/07 Python
python登录WeChat 实现自动回复实例详解
2019/05/28 Python
Python编程实现tail-n查看日志文件的方法
2019/07/08 Python
Python3环境安装Scrapy爬虫框架过程及常见错误
2019/07/12 Python
python中count函数简单用法
2020/01/05 Python
python使用requests库爬取拉勾网招聘信息的实现
2020/11/20 Python
网站客服岗位职责
2014/04/05 职场文书
员工安全生产承诺书
2014/05/22 职场文书
2014年党支部承诺书
2014/05/30 职场文书
个人租房协议书(范本)
2014/10/14 职场文书
村党的群众路线教育实践活动总结材料
2014/10/31 职场文书
小学2016年第十八届推普周活动总结
2016/04/05 职场文书
python超详细实现完整学生成绩管理系统
2022/03/17 Python