在 Linux 中可以有一个没有上下文切换的模式切换吗?
模式切换描述了从用户模式到内核模式的切换,或者相反。 上下文切换通常意味着当您切换到运行另一个进程而不是当前正在运行的进程时。
据我了解,模式切换只有在抛出异常时才会发生。然后调用异常处理程序并通过查看异常表来决定要做什么。但这不算上下文切换吗?从现在开始,CPU 执行异常处理程序的代码,而不是进程的代码。
此外,我知道异常处理程序是必要的,以便为进程保存一些需要的寄存器,并且当模式切换回用户时,处理程序必须恢复这些寄存器。
那么,真的可以有没有上下文切换的模式切换吗?
帮助将不胜感激。
最佳答案
旁注:不,当您想通过系统调用访问硬件时,也可能会发生模式切换。此外,需要进行模式切换以保存和恢复上下文切换的过程。使用用户态线程时无需切换模式。
在用户模式下运行的进程之间的切换是上下文切换,但您通常不会将内核称为进程,因为它处理进程。因此,这似乎是一个术语问题,具体取决于您是否将内核称为进程。我会说模式切换可以在没有上下文切换的情况下发生。
关于linux - 没有上下文切换的模式切换与 linux 中的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57192112/