【发布时间】:2013-10-31 04:42:25
【问题描述】:
内核是守护进程吗? 引发陷阱(通过 INT 指令)是与内核通信的唯一方法吗? 是否所有调用内核子例程的系统调用都会引发 INT 陷阱? 用户应用程序是否在与内核守护进程不同的进程中运行,用户进程是由内核守护进程生成的?
【问题讨论】:
-
内核不是守护进程——它既不能代表进程运行,也不能被调度。
标签: linux linux-kernel operating-system kernel
内核是守护进程吗? 引发陷阱(通过 INT 指令)是与内核通信的唯一方法吗? 是否所有调用内核子例程的系统调用都会引发 INT 陷阱? 用户应用程序是否在与内核守护进程不同的进程中运行,用户进程是由内核守护进程生成的?
【问题讨论】:
标签: linux linux-kernel operating-system kernel
内核是守护进程吗?
没有。
引发陷阱(通过 INT 指令)是与内核通信的唯一方法吗?
是的,因为内核和用户空间应用程序处于不同的特权级别,称为环。内核运行在supervisor模式,称为ring0,而用户应用程序运行在ring3,称为usermode。
所有调用内核子例程的系统调用都会引发 INT 陷阱吗?
是的,他们有。
用户应用程序是否在与内核守护进程不同的进程中运行,用户进程由内核守护进程生成?
这个我不太明白,请详细说明。
【讨论】:
int 东西更有效。
引发陷阱(通过 INT 指令)是与内核通信的唯一方法吗?
没有。首先,INT 是一种旧的陷阱机制,现在大多数操作系统在 x86 和 x86_64 平台上使用SYSENTER。其他架构有各种类型的软件中断/陷阱指令。
陷阱并不是与内核通信的唯一方式。由于内核可以访问任何内存,包括分配给用户模式进程的内存,因此共享内存非常可行。
是否所有调用内核子例程的系统调用都会引发 INT 陷阱?
“调用”内核例程的方法是使用陷阱 (SYSENTER)。其他机制,例如供内核处理的共享内存队列数据,但您不会真的说这是一个子例程调用。
【讨论】:
进程、守护进程等的整个概念是由内核创建的抽象。在 CPU 层面,只有两级划分。有处理器内核,它们并行运行它们的代码,还有特权环,它决定可以使用哪些指令。
内核在 ring0 中运行(有时某些驱动程序位于 ring 1 和 2)。用户空间代码在 ring3 中运行。需要特殊的处理器机制,例如中断或 sysenter 指令,才能将控制权从 ring3 代码(用户空间进程)转移到 ring0 代码(内核)。
【讨论】: