我发现在TLB丢失过程中,某些体系结构使用硬件来处理它,而另一些使用OS。但是,当涉及到页面错误时,大多数人都使用操作系统而不是硬件。
我试图找到答案,但没有找到任何文章解释原因。
有人可以帮忙吗?谢谢。
如果硬件可以自行处理,则无需进行故障处理。
整个问题是,操作系统尚未将页面连接到硬件页面表中,例如因为它实际上根本不在内存中,或者是因为OS需要捕获写入尝试才能使OS实现写时复制。
页面错误分为三类:
硬件不知道哪个是哪个,它所知道的只是页面遍历没有找到该虚拟地址的有效页表条目,因此现在是让操作系统决定下一步操作的时候了。 (即引发运行操作系统的页面错误处理程序的页面错误异常。)有效/无效纯粹是软件/操作系统的概念。
这些示例原因并不是详尽的清单。例如操作系统可能会删除页面的硬件映射而没有实际对其进行分页,只是为了查看进程是否很快再次触及该页面。 (在这种情况下,这只是廉价的软页面错误。但是,如果不是,那么它实际上可能会将其分页到磁盘上。如果干净,则将其丢弃。)