【问题标题】:Kernel space in a.outa.out 中的内核空间
【发布时间】:2012-01-17 13:55:00
【问题描述】:

我对用户空间和内核空间有点困惑。内核空间是否包含在 linux 中 a.out 的 4 gb 虚拟内存中,或者内核空间不同且不包含在该 4 gb 内存空间中。此外,为操作系统保留的 4 GB 虚拟内存部分包括内核或内核空间。如果我上面的所有概念都是错误的,请纠正我

【问题讨论】:

标签: c linux unix operating-system


【解决方案1】:

32 位 Linux 的标准内存模型使用 1 GB 用于内核,3 GB 用于用户空间。

这总计 4 GB 可用内存空间,所以“是”,内核空间包含在地址空间中。

This article 有一些显示拆分的图表。

【讨论】:

  • 好吧,这意味着是的,内核空间包含在 4GB 的可寻址虚拟内存中。我 +1 了这个答案,虽然它没有触及关于操作系统内存空间的部分问题......
【解决方案2】:

这完全取决于操作系统。

大多数操作系统将空间划分为 4GB,如 2/2 或 3/1,因为这样更容易从用户模式切换到内核模式,在切换过程中不需要重新映射页表。

不过,Linux 甚至允许 4GB 用户空间和 4GB 内核空间。但正如您可以想象的那样,这需要在每次需要切换到内核模式时重新映射完整的内存,这会产生一些开销。

虽然它在您的内存空间中,但操作系统不允许从用户模式代码访问内核空间。由于页表中的特权位,这种访问控制是可能的。

从用户空间对内核的所有调用实际上都是一个int 80h 调用。此调用将调用转移到内核的中断处理程序,并使内核和用户空间都可以访问。

【讨论】:

  • +1。但是 Linux 从 Pentium Pro 开始也允许 PAE,其中内核可以寻址高达 64 GB。
  • 不,在 PAE 中,内核不直接寻址超过 4Gb。它只是管理地图以便使用 64Gb。
猜你喜欢
  • 2015-12-21
  • 2013-01-21
  • 1970-01-01
  • 1970-01-01
  • 2019-03-24
  • 2017-01-10
  • 1970-01-01
  • 2013-10-29
  • 2017-11-24
相关资源
最近更新 更多