gpt4 book ai didi

linux - 内核态上下文切换时如何保持原子性?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:18:39 24 4
gpt4 key购买 nike

毫无疑问,内核态的上下文切换,是被硬件中断或者软件中断困住了。也知道上下文切换应该保持原子性,但是如何实现原子性呢?众所周知,中断门是禁止所有中断的(不知道有没有NMI)。难道一个中断门本身就可以自然地看作原子序列吗?

最佳答案

原子操作在内核中的实现如下。在高层(例如,从设备驱动程序开发人员的 POV),内核提供 locks获取和释放类似于用户空间互斥锁。在较低级别,这些锁是使用 atomic operations 的组合实现的。并向内核调度程序发出信号 preemption should not occur .

在调度程序本身中,原子性由 masking interrupts 保证.这是使用单个指令(cli 或 sti)完成的,因此它本身是原子的。 NMI 确实可以在中断被清除时发生,但是,这是一种特殊情况。 NMI 处理程序知道它可以在一个奇怪的上下文中被调用,所以它确保它确实是 not change the context .

关于linux - 内核态上下文切换时如何保持原子性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10477591/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com