在相同的逻辑空间映射操作系统代码的原因?

我不明白,如果有一些原因映射OS模块与代码(例如在Win32中,我不知道它是如何在其他系统上)与运行的用户进程相同的逻辑空间。 这不是更好/更清楚,不是所有的模块映射到大的空间,但只是一些kernell调用跳表或类似的东西。 有什么理由将其全部映射到大面积?

例如,在32位Linux上,通常配置地址空间,以使用户空间任务具有最低3GB的虚拟地址空间,而内核具有最高1GB。 这样做的好处是在进入系统调用时,页表不需要改变 – 所以不需要改变TLB,内核可以对用户空间任务进行有效的内存访问(通过适当的指针验证)。