答案1
内核代表进程处理这个问题。实际上,只有当 CPU 处于特权模式(x86 上的环 0)时才能访问内核的地址空间。
也可以看看所有进程的虚拟地址空间在其“内核”部分是否具有相同的内容?,Linux进程的虚拟内存空间中拥有内核部分有什么用?,64位linux进程的虚拟内存的内核部分里面有什么?, 和除了使用系统调用之外,我们什么时候会跳转到进程虚拟内存的内核部分? (在Linux中)。
答案2
这个(非常简化的)内存映射来自很久以前,在遥远的操作系统中。如今,片段可以随机映射到地址空间(一个有趣的例子是包含当前时间的 Linux 内核变量,用于非常频繁地请求它的程序的性能),并且程序的地址空间是很多片段,分散在各处(逻辑)地址空间。例如,每个共享库都分配有自己的内存区域。