系统调用没有上下文切换?

use*_*005 6 process context-switch linux-kernel

当我遇到这个时,我只是在阅读我的操作系统中的linux如何工作.

[...]内核被创建为单个单一的二进制文件.主要原因是提高性能.由于所有内核代码和数据结构都保存在单个地址空间中,因此当进程调用操作系统函数或传递硬件中断时,不需要上下文切换.

这听起来对我来说非常了不起,当然它必须存储进程的上下文才能运行到内核模式来处理中断..但好吧,我现在就买它.在描述进程的调度上下文时,有几页,它说:

进程执行时发生的系统调用和中断都将使用此堆栈.

"这个堆栈"是内核存储进程寄存器等的地方.

这不是第一次引用的直接矛盾吗?我不知道以某种方式解释它吗?

Fré*_*idi 5

我认为第一个引用是指单片内核和内核之间的差异.

Linux是单片的,其所有内核组件(设备驱动程序,调度程序,VM管理器)都在0环上运行.因此,在执行系统调用和处理中断时不需要上下文切换.

对比微内核,其中设备驱动程序和IPC提供程序等组件在环0之外的用户空间中运行.因此,此体系结构在执行系统调用时需要额外的上下文切换(因为执行模块可能驻留在用户空间中)并处理中断(以进行中继)设备驱动程序的中断).