linux kernel source code ABC #2 spinlock与preemption, interrupt
2015-07-14 16:15
645 查看
hold住spinlock之后,会置一个状态(进程描述符中的?),导致当前处理器处于不抢占(non-preemptive)状态。
如果hold spinlock之后,可以抢占,则可能会被调试到另外的程序,而另外的程序需要获取这个spinlock的时候,就白白浪费处理器了。
如果spinlock需要与中断进行同步,则需要在获取spinlock的时候,同时禁止当前处理器中断,这就是spinlock_irq_save之类函数的用武之地。
如果在中断处理程序中需要去拿一个spinlock而这个spinlock相同处理器上的进程拿到,就会形成死锁。SMP可能会稍稍好点,也许还能将进程调度到别的处理器,还能够活过来。
# LDD3 读书笔记
如果hold spinlock之后,可以抢占,则可能会被调试到另外的程序,而另外的程序需要获取这个spinlock的时候,就白白浪费处理器了。
如果spinlock需要与中断进行同步,则需要在获取spinlock的时候,同时禁止当前处理器中断,这就是spinlock_irq_save之类函数的用武之地。
如果在中断处理程序中需要去拿一个spinlock而这个spinlock相同处理器上的进程拿到,就会形成死锁。SMP可能会稍稍好点,也许还能将进程调度到别的处理器,还能够活过来。
# LDD3 读书笔记
相关文章推荐
- HadoopSourceAnalyse---ResourceMananger-Request Handle
- HadoopSourceAnalyse---RMAppAttempt FSM
- HadoopSourceAnalyse --- NodeManager -- initiate
- HadoopSourceAnalyse --- Nodemanager Container FSM
- HadoopSourceAnalyse --- Nodemanager Application FSM
- HadoopSourceAnalyse --- Mapreduce Job init&submit
- HadoopSourceAnalyse --- Mapreduce ApplicationMaster init&startup
- HadoopSourceAnalyse --- Mapreduce ApplicationMaster Job start
- HadoopSourceAnalyse --- Mapreduce ApplicationMaster Job FSM
- HadoopSourceAnalyse --- Mapreduce ApplicationMaster TaskAttempt FSM
- HDFS---Namenode
- HDFS ---- Services startup
- HDFS --- DataNode startup service initialize
- Magical Data Modelling Framework for JSON
- Linux kernel浮点计算支持
- Linux内核阅读--文件路径查找(一)
- Linux内核阅读--文件路径查找(二)
- C++ std::sort导致的core dumped
- Android4学习-高级编程读书笔记开始篇