硬件编程 内存管理( 二 )


2.在操作系统初始化的后期,创建第一个用户进程 。在这个过程中,还需要创建一个页表,并将其地址赋给进程结构中的指针成员变量 。也就是说,每个进程必须有自己的页表 。3.当用户创建一个新进程时,子进程复制父进程的一个页表,然后页表的内容随着程序的运行逐渐更新和改变 。
4.系统处理内存寻址,内存寻址由操作系统管理和维护,以确保正常进程 。
存储器寻址概述图
上图显示了内存管理的硬件结构和处理流程:
a、cpu发起寻址请求,由MMU处理;
b、如果在TLB缓冲区中找到MMU,直接使用映射后的物理地址从主存中读取;如果没有找到,则需要从当前进程的页表中查询,如果找到,则返回更新TLB;;
C.如果页表中没有虚拟地址,当发现虚拟地址还没有分配给物理地址空时,就会触发缺页中断 。此时,这个虚拟地址对应的磁盘文件的内容会被检查,加载到内存中,并在页表中建立映射关系,这样程序才能继续执行 。
了解了地址翻译的过程,VA到PA的映射过程就清晰了:MMU先在TLB查找VA,如果找不到匹配的PTE条目,就在TLB查找外部页表替换;根据PTE条目中访问权限的限制,检查该VA指令是否合规,如果不合规,则不继续,并抛出异常exception;满足要求后,根据VA的地址段查询页表,保持偏移量(广义)不变,合并物理地址,发送出去 。
【硬件编程 内存管理】


推荐阅读