页命中、缺页
(1)页命中
• a) 处理器要对虚拟地址VA进行访问。
• b) MMU的TLB没有命中,通过TWU遍历主存页表中的PTEA(PTE地址)。
• c) 主存向MMU返回PTE。
• d) MMU通过PTE映射物理地址,并把它传给高速缓存或主存。
• e) 高速缓存或主存返回物理地址对应的数据给处理器。
(2)缺页
• a) 处理器要对虚拟地址VA进行访问。
• b) MMU的TLB没有命中,通过TWU遍历主存页表中的PTEA(PTE地址)。
• c) 主存向MMU返回PTE。
• d) PTE中有效位是0,MMU触发一次异常,CPU相应缺页异常,运行相应的处理程序。
• e) 缺页异常处理程序选出物理内存中的牺牲页,若这个页面已经被修改,将其换出到EMMC。
• f) 缺页异常处理程序从EMMC中加载新的页面,并更新内存中页表的PTE。
• g)缺页异常处理程序返回到原来的进程,再次执行导致缺页的指令。CPU将引起缺页异常的虚拟地址重新发给MMU。由于虚拟页面现在缓存在主存中,主存会将所请求的地址对应的内容返回给cache和处理器。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
相关推荐
哪位仁兄知道:MMU的一级页表为什么必须是16K对齐,最好有计算公式~~~谢谢!!!
发表于 02-14 23:46
刚开始学,好多东西都云里雾里的TT为什么在bootloader里要进行页表初始化然后开启MMU,然后在进入内核后还要创建页表开启MMU?这两个有什么不一样么?s3c2410,bootl
发表于 05-06 17:25
、4KB和1KB大小地址空间的映射。要实现从虚拟地址到物理地址的映射,必然会遇到一个问题,如何找到这个页表。对于表的查找,要知道这个表的基地址和偏移地址,在具有MMU功能的处理器中,集成了一个被称为CP15
发表于 08-29 11:10
的设置MMU,可以把16个虚页隐射到8个页框中的任何一个,但是这个方法并没有有效的解决虚拟地址空间比物理地址空间大的问题。从上图中我们可以看到,我们只有8个页框(物理地址),但我们有1
发表于 07-03 08:19
ARM裸机1期加强版 024_mmu_cache_021\002_mmu_021_004\mmu.c 文件/* 2.3 for 64M sdram */创建页表 SDRAM 64M 虚
发表于 04-18 07:45
( translate table )是实现 MMU 功能不可缺少的一步。页表是位于系统的内存中,页表的每一项对应于一个虚拟地址到物理地址的映射。每一项的长度即是一个字的长度(在 AR
发表于 10-23 15:29
众所周知,MMU的页表是由软件建立在外部内存中的。实际上有两条硬件路径需要访问这个页表:1 MMU硬件进行page table walk时,
发表于 10-24 15:45
对于一个有MMU的CPU而言,MMU开启后,CPU是这样寻址的:CPU任何时候,一切时候,发出的地址都是虚拟地址,这个虚拟地址发给MMU后,MMU通过
发表于 02-02 14:08
•1.1w次阅读
前面讲到过写时复制缺页异常(COW),一般用于父子进程之间共享页,而我们会常见一种缺页异常是匿名映射缺页异常,今天我们就来讨论下这种缺页异常
发表于 09-09 10:55
•3040次阅读
既然MMU开启后,硬件会自动的将虚拟地址转换成物理地址,那么还需要我们软件做什么事情呢?即创建一个页表翻译都需要做哪些事情呢?或者说启用一个MMU需要软件做什么事情呢?
发表于 04-26 14:37
•4940次阅读
本文讲解Linux内核虚拟内存管理中的mmu_gather操作,看看它是如何保证刷tlb和释放物理页的顺序的,又是如何将更多的页面聚集起来统一释放的。
发表于 05-20 14:37
•1978次阅读
MMU怎么知道这个页表在内存中的具体地址呢? 通常CPU会提供一个页表基址寄存器给操作系统使用,用于给MMU指示
发表于 10-08 11:52
•1313次阅读
当CPU访问虚拟地址0的时候,MMU会去查上面页表的第0行,发现第0行没有命中,于是无论以何种形式(R读,W写,X执行)访问,MMU都会给CPU发出page fault,CPU自动跳到
发表于 11-09 12:30
•1192次阅读
1-CPU发出的虚拟地址 CPU发出的虚拟地址由两部分组成:VPN和offset,VPN(virtual page number)是页表中的条目number,而offset是指页内偏移。 最终转换后
发表于 11-26 15:40
•666次阅读
空间,也有相应的页表负责虚拟地址到物理地址之间的转换。MMU查询的过程中,用户进程的一级页表的基址存放在TTBR0。操作系统的内核空间公用一块地址空间,
发表于 11-26 16:28
•962次阅读
评论