Linux 内核中的上下文切换时间

mri*_*rma 5 linux multithreading context-switch linux-kernel context-switching

在 Linux Kernel 中,当处理器上下文从一个线程切换到另一个线程时,寄存器的状态会保存到 PCB 中,并进行更多的簿记以确保可以再次加载确切的状态。

从内核内存中保存和加载寄存器的整个过程可能需要一些 CPU 周期。那么这个时间是属于用户 CPU / 系统 CPU 还是其他地方

Nic*_*one 0

那个时间肯定应该是在系统CPU 下。花在系统调用和中断上的任何时间都应该在系统 CPU 下,而不是在用户 CPU 下。用户 CPU 花费在正在主动执行的 ELF 中运行程序集以及任何支持库上的时间,仅此而已。甚至 I/O 也算作系统 CPU。

查看1.8 节中的文档,我们看到

- system: processes executing in kernel mode
Run Code Online (Sandbox Code Playgroud)

当然,上下文切换访问内核级数据而不是用户态数据。因此,这段代码是在内核模式下运行的,我们可以根据其文档的合法性确定这被计为系统时间。