linux - 没有上下文切换的模式切换与 linux 中的进程

标签 linux process kernel mode context-switch

在 Linux 中可以有一个没有上下文切换的模式切换吗?

模式切换描述了从用户模式到内核模式的切换,或者相反。 上下文切换通常意味着当您切换到运行另一个进程而不是当前正在运行的进程时。

据我了解,模式切换只有在抛出异常时才会发生。然后调用异常处理程序并通过查看异常表来决定要做什么。但这不算上下文切换吗?从现在开始,CPU 执行异常处理程序的代码,而不是进程的代码。

此外,我知道异常处理程序是必要的,以便为进程保存一些需要的寄存器,并且当模式切换回用户时,处理程序必须恢复这些寄存器。

那么,真的可以有没有上下文切换的模式切换吗?

帮助将不胜感激。

最佳答案

旁注:不,当您想通过系统调用访问硬件时,也可能会发生模式切换。此外,需要进行模式切换以保存和恢复上下文切换的过程。使用用户态线程时无需切换模式。

在用户模式下运行的进程之间的切换是上下文切换,但您通常不会将内核称为进程,因为它处理进程。因此,这似乎是一个术语问题,具体取决于您是否将内核称为进程。我会说模式切换可以在没有上下文切换的情况下发生。

关于linux - 没有上下文切换的模式切换与 linux 中的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57192112/

相关文章:

linux - 如何将 Linux 内核取消优化并使用 -O0 进行编译?

linux - 为什么人们常说Linux是一个操作系统?

linux - 如何创建外部 wiki 的转储/镜像?

c - 子进程在 C 中终止后,父进程未完成

c++ - fork 进程有问题

bash - 如何等待非子进程?

linux - 负责虚拟内存的内核代码

python - 如何在linux中的wxpython面板中播放SWF

linux - 我可以使用 unix utils 以编程方式将 "burn in"ANSI 控制代码写入文件吗?

linux 上的 php apache