a.out中的内核空间

时间:2012-01-17 13:55:00

标签: c linux unix operating-system

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

2 个答案:

答案 0 :(得分:3)

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

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

This article有一些图表显示分割。

答案 1 :(得分:2)

这完全取决于操作系统。

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

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

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

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