Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory management cpu在它';s获得了物理内存地址_Memory Management_Memory Address_Virtual Memory_Tlb_Page Tables - Fatal编程技术网

Memory management cpu在它';s获得了物理内存地址

Memory management cpu在它';s获得了物理内存地址,memory-management,memory-address,virtual-memory,tlb,page-tables,Memory Management,Memory Address,Virtual Memory,Tlb,Page Tables,所以我知道,当cpu查找一个虚拟地址时,它会先查看TLB,然后查看页表,以获取物理地址(pa),但我有点搞不清楚它对该pa的作用 它只是在每一级内存中检查地址,直到命中为止吗?例如:检查缓存l1的pa,如果未命中则检查l2的pa,如果未命中则检查l3的pa,如果未命中则检查RAM中的pa,如果未命中则从磁盘读取。我试着用谷歌搜索这个并搜索堆栈溢出,但我找不到任何关于这个过程的全面或清晰的解释 你的问题显示出相当多的困惑。为了开始学习过程,我建议完全忽略缓存。缓存检查完全是一个硬件过程,除非您对C

所以我知道,当cpu查找一个虚拟地址时,它会先查看TLB,然后查看页表,以获取物理地址(pa),但我有点搞不清楚它对该pa的作用

它只是在每一级内存中检查地址,直到命中为止吗?例如:检查缓存l1的pa,如果未命中则检查l2的pa,如果未命中则检查l3的pa,如果未命中则检查RAM中的pa,如果未命中则从磁盘读取。我试着用谷歌搜索这个并搜索堆栈溢出,但我找不到任何关于这个过程的全面或清晰的解释

  • 你的问题显示出相当多的困惑。为了开始学习过程,我建议完全忽略缓存。缓存检查完全是一个硬件过程,除非您对CPU设计感兴趣,否则它与编程没有什么关系

  • CPU将逻辑地址转换为物理地址。更准确地说,它将逻辑地址转换为物理页面框架,将办公室转换为物理页面框架

  • 如果CPU无法将逻辑地址转换为物理地址,则会触发页面错误

  • 然后,操作系统的页面错误处理程序尝试查看相应的页面是否为虚拟页面(存储在磁盘上)。如果是这样,页面错误处理程序将从磁盘加载页面,并重新启动导致错误的指令。否则,操作系统会触发某种访问冲突