Operating system 为什么ContextSwitch必须是原子的,以及如何在实践中实现这一点?

Operating system 为什么ContextSwitch必须是原子的,以及如何在实践中实现这一点?,operating-system,thread-safety,locking,context-switch,Operating System,Thread Safety,Locking,Context Switch,为什么ContextSwitch必须是原子的,以及如何在实践中实现这一点 我认为它一定是原子的,因为如果它不能完全保存以前进程的状态,它可能会给未来的ContextSwitchs、不准确和错误的数据带来问题 为了实现这一点,我们可以使用锁吗 这有意义吗?还是我把事情简单化了。可能和你的任务相同 因为保存操作需要几个步骤来保存CPU寄存器的值、进程状态、内存管理信息等。。事实上,有必要使上下文开关原子化以确保一致性 为此,可以使save方法和load方法“同步”,以便在一个块中执行它们各自的步骤

为什么ContextSwitch必须是原子的,以及如何在实践中实现这一点

我认为它一定是原子的,因为如果它不能完全保存以前进程的状态,它可能会给未来的ContextSwitchs、不准确和错误的数据带来问题

为了实现这一点,我们可以使用锁吗


这有意义吗?还是我把事情简单化了。

可能和你的任务相同

因为保存操作需要几个步骤来保存CPU寄存器的值、进程状态、内存管理信息等。。事实上,有必要使上下文开关原子化以确保一致性


为此,可以使save方法和load方法“同步”,以便在一个块中执行它们各自的步骤

大多数CPU都提供了一种在一条指令中实现这一点的方法。由于上下文是针对单个CPU的,因此可以锁定该CPU上的中断并在多条指令中执行。锁定机制取决于CPU和操作系统。上下文切换不明确。通常,MMU开关是CPU寄存器的一个独立阶段。进程状态由内核维护,因此它通常是最后一个要更新的状态。切换通常在操作系统中进行。通常,MMU内核映射是相同的,因此只要在返回用户空间之前完成,其顺序就无关紧要。