内核是否享有独立内核空间,取决于操作系设计,且各有优势。

内核享有独立内核空间:例如 rCore。

  • 优点:

    • 用户和内核都能使用完整的地址空间,在地址空间比较局限的情况下作用较大,例如只有4G地址空间的32位机器。但在64位机器上完全没有优势可言。
    • 内核可以更加独立和安全地运行,不受用户空间的影响。
  • 缺点:

    • 由用户态陷入内核态需要切换页表,导致TLB失效。

    • 在内核态处理用户态传入的指针时需要进行地址转换,即使用页表将进程虚拟地址转化为物理地址。

综上所述,在现代计算机上,让内核拥有独立地址空间并不占优势,故大多数操作系统都采用这样的实现:将内核空间映射到每一个进程空间的固定区域。如下图中,32位Linux内核地址空间划分0~3G为用户空间,3~4G为内核空间。这样虽然内核可用地址空间较小,但其优势更大。而且现在计算机大多是64位,地址空间足够庞大,即使不能使用完整地址空间也完全够用了。

1bf804873e92d9966e394d43dadfb6e