fei*_*iny 11 linux interrupt linux-kernel preemption spinlock
我最近正在阅读Linux内核开发,我有一些与禁用抢占相关的问题.
在第7章的"中断控制"部分,它说:
此外,禁用中断还会禁用内核抢占.
我还从书中读到,在以下情况下可能会发生内核抢占:
当中断处理程序退出时,返回内核空间之前.
当内核代码再次成为可抢占状态时.
如果内核中的任务显式调用schedule()
如果内核中的任务阻塞(导致调用schedule())
但我无法将禁用中断与这些情况联系起来.
据我所知,自旋锁将使用preempt_disable()函数禁用抢占.
帖子究竟什么是"自旋锁"? 说:
在单核心机器上,自旋锁只是"禁用中断"或"引发IRQL",这完全阻止了线程调度.
preempt_disable()是否通过禁用中断来禁用抢占?
Seb*_*iol 11
我不是调度大师,但我想解释一下我是如何看待它的.这里有几件事.
thread_info->preempt_count
变量.你可以看到什么是preempt_disable().试试这个:1.获得一个旋锁.2.通话时间表()
在dmesg中,您将看到类似"BUG:schedule while atomic"的内容.当调度程序检测到您的进程处于原子(非抢占)上下文但会自行调度时,会发生这种情况.
祝好运.
归档时间: |
|
查看次数: |
12321 次 |
最近记录: |