所以我了解到,当cpu查找虚拟地址时,它先查看TLB,然后再查看页表,以获取物理地址(pa),但是我对此感到有些困惑pa。
它是否只是检查每个内存级别的地址,直到被点击?例如:在高速缓存l1中检查pa,如果未命中,则在l2中检查pa,如果未命中,则在l3中,检查pa,如果未命中,则在RAM中检查pa,如果未命中,则从磁盘读取。我尝试使用谷歌搜索并搜索堆栈溢出,但是找不到任何全面或清晰的过程说明。
答案 0 :(得分:1)
您的问题暗示了很多困惑。为了开始您的学习过程,我建议您完全忽略缓存。缓存检查完全是一个硬件过程,除非您是CPU设计人员,否则它与编程没有任何关系。
CPU将逻辑地址转换为物理地址。更准确地说,它将逻辑地址转换为物理页面框架,将办公室转换为物理页面框架。
如果CPU无法将逻辑地址转换为物理地址,则会触发页面错误。
然后,操作系统的页面错误处理程序将尝试查看相应的页面是否是虚拟的(存储在磁盘上)。如果是这样,则页面错误处理程序将从磁盘加载页面并重新启动导致错误的指令。如果不是,则操作系统会触发某种访问冲突。