1

我不明白是否有某种理由将 os 模块与代码(例如在 win32 中,我不知道它在其他系统上的情况)映射到与正在运行的用户进程相同的逻辑空间中。不是更好/更清楚,不是将所有模块映射到大空间,而只是一些内核调用的跳转表或类似的东西。有什么理由把它全部映射到大面积上吗?

4

1 回答 1

2

例如,在 32 位 Linux 上,地址空间通常配置为使用户空间任务具有底部 3GB 的虚拟地址空间,而内核具有顶部 1GB。这里的优点是在进入系统调用时,不需要更改页表 - 因此不会刷新 TLB,并且内核可以对用户空间任务进行有效的内存访问(通过适当的指针验证)。

于 2013-06-25T14:29:42.107 回答