电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>嵌入式开发>LINUX内核有那几种锁详细介绍

LINUX内核有那几种锁详细介绍

2020-11-17 | rar | 0.01 MB | 次下载 | 免费

资料介绍

  Mutex 是一把钥匙,一个人拿了就可进入一个房间,出来的时候把钥匙交给队列的第一个。一般的用法是用于串行化对critical section 代码的访问,保证这段代码不会被并行的运行。

  Semaphore是一件可以容纳N人的房间,如果人不满就可以进去,如果人满了,就要等待有人出来。对于N=1的情况,称为binary semaphore。一般的用法是,用于限制对于某一资源的同时访问。

  Binary semaphore与Mutex 的差异:

  在有的系统中Binary semaphore与Mutex 是没有差异的。在有的系统上,主要的差异是mutex 一定要由获得锁的进程来释放。而semaphore可以由其它进程释放(这时的semaphore实际就是个原子的变量, 大家可以加或减),因此semaphore可以用于进程间同步。Semaphore的同步功能是所有系统都支持的,而Mutex 能否由其他进程释放则未定,因此建议mutex 只用于保护critical section 。而semaphore则用于保护某变量,或者同步。

  另一个概念是spin lock ,这是一个内核态概念。spin lock 与semaphore的主要区别是spin lock 是busy waiting ,而semaphore是sleep 。对于可以sleep的进程来说, busy waiting 当然没有意义。对于单CPU的系统, busy waiting当然更没意义(没有CPU可以释放锁) 。因此,只有多CPU的内核态非进程空间,才会用到spin lock 。Linux kernel 的spin lock 在非SMP的情况下,只是关irq ,没有别的操作,用于确保该段程序的运行不会被打断。其实也就是类似mutex 的作用,串行化对critical section 的访问。但是mutex 不能保护中断的打断,也不能在中断处理程序中被调用。而spin lock 也一般没有必要用于可以sleep 的进程空间。

 

  ---------------------------------------------------------------------

  ------------------------

  内核同步措施

  为了避免并发,防止竞争。内核提供了一组同步方法来提供对共享数据的保护。我们的重点不是介绍这些方法的详细用法, 而是强调为什么使用这些方法和它们之间的差别。

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

  目前来说内核中原子操作多用来做计数使用,其它情况最常用的是两种锁以及它们的变种: 一个是自旋锁,另一个是信号量。我们下面就来着重介绍一下这两种锁机制。

下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1TC358743XBG评估板参考手册
  2. 1.36 MB  |  330次下载  |  免费
  3. 2开关电源基础知识
  4. 5.73 MB  |  6次下载  |  免费
  5. 3100W短波放大电路图
  6. 0.05 MB  |  4次下载  |  3 积分
  7. 4嵌入式linux-聊天程序设计
  8. 0.60 MB  |  3次下载  |  免费
  9. 5基于FPGA的光纤通信系统的设计与实现
  10. 0.61 MB  |  2次下载  |  免费
  11. 6基于FPGA的C8051F单片机开发板设计
  12. 0.70 MB  |  2次下载  |  免费
  13. 751单片机窗帘控制器仿真程序
  14. 1.93 MB  |  2次下载  |  免费
  15. 8基于51单片机的RGB调色灯程序仿真
  16. 0.86 MB  |  2次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33564次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21548次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6653次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537796次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420026次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191185次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183278次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费