当前位置: 代码迷 >> 综合 >> 嵌入式面试之《多进程多线程编程系列》说说虚拟地址、物理地址、MMU、分页机制、TLB问题汇总
  详细解决方案

嵌入式面试之《多进程多线程编程系列》说说虚拟地址、物理地址、MMU、分页机制、TLB问题汇总

热度:2   发布时间:2024-02-13 08:18:50.0

文章目录

    • 什么是物理地址
    • 引入虚拟地址的好处
    • 简述分页机制
    • 什么是MMU
    • 什么是TLB

什么是物理地址

物理地址(Physical Address) 是指出现在CPU外部地址总线上的、用于寻址物理内存的地址信号,是地址变换的最终结果地址。如果启用了分页机制,那么线性地址会使用页目录和页表中的项变换成物理地址。如果没有启用分页机制,那么线性地址就直接成为物理地址了。

引入虚拟地址的好处

(1)程序可以用一系列相邻的虚拟地址访问实际物理内存中不相邻的大内存缓冲区,提高内存利用率。
(2)程序可以用一系列虚拟地址访问大于可用物理内存的内存缓冲区
(3)不同进程操作的虚拟地址分隔开。
即不同进程不会操作同一个物理地址,造成程序崩溃。

简述分页机制

将虚拟地址空间划分成页,页的大小由CPU决定(常见的页大小是4K)。将虚拟地址划分成若干部分(取决于分多少级)。对于两级分页,第一级叫做页目录项索引,第二级叫页表项索引,最后一部分表示页内偏移(用于寻址页内空间)。内存中维护了一套页目录和页表,根据页目录索引可以找到页目录项,页目录项存放着页表的地址。根据页表地址和页表项索引可以找到页表项。页表项存放着该线性地址所对应的物理地址前n位(如果页大小是4K,则n=20)。根据页表项+页内偏移即可算出对应的物理地址。

32位arm采用两级分页机制,而linux采用4级分页机制。