基本思想对于一个程序来说,cod,数据,堆栈的总大小可以超过实际物理内存的大小,操作系统把当前使用部分内容放到物理内存中,而把其他未使用的内容放到下一级存储器,如disk或者闪存。
内存管理单元(Memory Manage Unit,MMU)负责地址转换。
使用虚拟存储器可以降低物理存储器容量需求,还可以实现程序保护(部分内容不会被其他程序随便改写)和程序共享(同一个物理地可以映射到不同程序中不同的虚拟地址)。
实现方式-----基于分页page管理虚拟存储器
虚拟存储器-----分页,典型大小4kB,称为page
物理地址空间---分页,典型大小4kB,称为frame
VA[11:0],页内地址 page offset,VA其余部分表示哪个页,称VPN(Virtual Page Number),
PA[11:0],frame内地址,frame offset,PA其余部分表示哪个frame,称为PFN(physical frame Number)。RISCV中我们叫PPN,并没有区分page和frame的区别,都叫page。
page fault:需要的页不在物理内存中,发生page fault,需要访问更下一级的存储器,如硬盘
页表(Page Table,PT):一张表格,存储从虚拟地址到物理地址(VPN到PFN)的对应关系。PT存储在物理内存中,页表寄存器(PTR,riscv中为satp)表示PT的起始地址。