我对这个说法感到困惑:
来自http://web.stanford.edu/class/cs140/projects/pintos/pintos_4.html#SEC63:
在 Pintos 中,每个用户虚拟页面都为其内核虚拟页面提供别名。
我认为内核只能使用用户虚拟地址来引用用户页面,内核虚拟地址在它上面。比如下图中,整个 VAS 不就是从 0 到 4GB,用户虚拟地址空间会被限制在 PHYS_BASE 之下的地址,而内核也可以访问它之上的地址吗?
(来自http://web.stanford.edu/class/cs140/cgi-bin/section/10sp-proj3.pdf)
但这似乎不是它的工作方式,因为 PintOS 文档仍在继续:
您必须以某种方式管理这些别名。例如,您的代码可以检查和更新两个地址的访问位和脏位。或者,内核可以通过仅通过用户虚拟地址访问用户数据来避免该问题。
这意味着内核可以通过单独的内核虚拟地址访问用户数据。我不确定为什么这两个地址会不同。
感谢您的任何澄清。