【问题标题】:Is OS Kernel a Daemon process? [closed]操作系统内核是守护进程吗? [关闭]
【发布时间】:2013-10-31 04:42:25
【问题描述】:

内核是守护进程吗? 引发陷阱(通过 INT 指令)是与内核通信的唯一方法吗? 是否所有调用内核子例程的系统调用都会引发 INT 陷阱? 用户应用程序是否在与内核守护进程不同的进程中运行,用户进程是由内核守护进程生成的?

【问题讨论】:

  • 内核不是守护进程——它既不能代表进程运行,也不能被调度。

标签: linux linux-kernel operating-system kernel


【解决方案1】:

内核是守护进程吗?

没有。

引发陷阱(通过 INT 指令)是与内核通信的唯一方法吗?

是的,因为内核和用户空间应用程序处于不同的特权级别,称为环。内核运行在supervisor模式,称为ring0,而用户应用程序运行在ring3,称为usermode。

所有调用内核子例程的系统调用都会引发 INT 陷阱吗?

是的,他们有。

用户应用程序是否在与内核守护进程不同的进程中运行,用户进程由内核守护进程生成?

这个我不太明白,请详细说明。

【讨论】:

  • 内核进入的可能方式因架构而异;给定操作系统使用哪种可能性(当有多个可能性时)是设计决策。
  • @ChrisStratton:我认为较新的 AMD 和 Intel 机器有一个新的系统调用指令,它比整个 int 东西更有效。
  • 是的,他们有 SYSENTER / SYSEXIT 的情况,但这更具体,大多数操作系统仍然使用 INT 指令进入 R0。
【解决方案2】:

引发陷阱(通过 INT 指令)是与内核通信的唯一方法吗?

没有。首先,INT 是一种旧的陷阱机制,现在大多数操作系统在 x86 和 x86_64 平台上使用SYSENTER。其他架构有各种类型的软件中断/陷阱指令。

陷阱并不是与内核通信的唯一方式。由于内核可以访问任何内存,包括分配给用户模式进程的内存,因此共享内存非常可行。

是否所有调用内核子例程的系统调用都会引发 INT 陷阱?

“调用”内核例程的方法是使用陷阱 (SYSENTER)。其他机制,例如供内核处理的共享内存队列数据,但您不会真的说这是一个子例程调用。

【讨论】:

    【解决方案3】:

    进程、守护进程等的整个概念是由内核创建的抽象。在 CPU 层面,只有两级划分。有处理器内核,它们并行运行它们的代码,还有特权环,它决定可以使用哪些指令。

    内核在 ring0 中运行(有时某些驱动程序位于 ring 1 和 2)。用户空间代码在 ring3 中运行。需要特殊的处理器机制,例如中断或 sysenter 指令,才能将控制权从 ring3 代码(用户空间进程)转移到 ring0 代码(内核)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-02
      • 2020-03-21
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      • 2016-10-31
      • 2011-06-23
      • 2011-04-20
      相关资源
      最近更新 更多