我在用户空间和内核空间方面有点困惑。内核空间是否包含在linux或内核空间中的a.out的4 gb虚拟内存中,并且不包含在该4 gb内存空间中。此外,为操作系统保留的4 gb虚拟内存部分包括内核或内核空间。如果我的所有上述概念都错了,请纠正我
答案 0 :(得分:3)
答案 1 :(得分:2)
这完全取决于操作系统。
大多数操作系统将空间划分为4GB,如2/2或3/1,因为它可以更容易地从用户模式切换到内核模式,在切换期间不需要重新映射页表。
然而,Linux甚至允许4GB用户空间和4GB内核空间。但是你可以想象这需要在每次需要切换到内核模式时重新映射完整的内存,这会产生一些开销。
虽然它在您的内存空间中,但操作系统不允许从用户模式代码访问内核空间。由于页表中的特权位,这种访问控制是可能的。
从用户空间对内核的所有调用实际上都是int 80h
调用。此调用将调用传递给内核的中断处理程序,并使内核和用户空间都可访问。