内核是守护进程吗?引发陷阱(通过 INT 指令)是与内核通信的唯一方法吗?是否所有调用内核子例程的系统调用都会引发 INT 陷阱?用户应用程序是否在与内核守护进程不同的进程中运行,用户进程是由内核守护进程生成的?
3 回答
内核是守护进程吗?
没有。
引发陷阱(通过 INT 指令)是与内核通信的唯一方法吗?
是的,因为内核和用户空间应用程序处于不同的特权级别,称为环。内核运行的是超级用户模式,称为 ring0,而用户应用程序运行在 ring3,称为用户模式。
是否所有调用内核子例程的系统调用都会引发 INT 陷阱?
是的,他们有。
用户应用程序是否在与内核守护进程不同的进程中运行,用户进程是由内核守护进程生成的?
这个不是很懂,请详细说明。
引发陷阱(通过 INT 指令)是与内核通信的唯一方法吗?
不。首先,INT
这是一种旧的陷阱机制,现在大多数操作系统都SYSENTER
在 x86 和 x86_64 平台上使用。其他架构具有各种类型的软件中断/陷阱指令。
陷阱并不是与内核通信的唯一方式。由于内核可以访问任何内存,包括分配给用户模式进程的内存,共享内存是非常可行的。
是否所有调用内核子例程的系统调用都会引发 INT 陷阱?
“调用”内核例程的方法是使用陷阱 ( SYSENTER
)。其他机制,例如供内核处理的共享内存队列数据,但您不会真的说这是一个子例程调用。
进程、守护进程等的整个概念是由内核创建的抽象。在 CPU 层面,只有两级划分。有处理器内核,它们并行运行它们的代码,还有特权环,它决定可以使用哪些指令。
内核在 ring0 中运行(有时某些驱动程序位于 ring 1 和 2)。用户空间代码在 ring3 中运行。特殊的处理器机制,例如中断或 sysenter 指令对于将控制从 ring3 代码(用户空间进程)转移到 ring0 代码(内核)是必要的。