ven*_*s.w 1 linux x86 operating-system kernel linux-kernel
毫无疑问,内核模式下的上下文切换被硬件中断或软件中断所困。众所周知,上下文切换应该保持原子性,但是如何实现原子性呢?众所周知,中断门会禁用所有中断(我不知道是否包含NMI)。中断门本身是否自然可以视为原子序列?
use*_*136 5
原子操作在内核中实现如下。在较高级别(例如,从设备驱动程序开发人员的POV处),内核提供的锁类似于用户空间互斥锁而获得和释放。在较低级别上,这些锁定是通过原子操作的组合来实现的,并向内核调度程序发送信号,告知不应发生抢占。
在调度程序本身中,通过屏蔽中断来保证原子性。这是使用一条指令(cli或sti)完成的,因此它本身就是原子的。清除中断后,确实会发生NMI,但这是一种特殊情况。NMI处理程序知道可以在怪异的上下文中调用它,因此可以确保它不会更改上下文。
归档时间:
13 年,9 月 前
查看次数:
1773 次
最近记录:
13 年,2 月 前