三 。操作系统对内存管理单元的管理
实际上,MMU就是为了满足操作系统日益复杂的内存管理而产生的 。OSMMU和OSMMU之间的关系如下:
1.系统初始化代码会在内存中生成一个页表,然后将页表地址设置到MMU对应的寄存器中,这样MMU就可以知道页表在物理内存中的什么位置,以便在需要的时候查找 。之后MMU通过特殊指令启动,这就是边界 。之后程序中所有内存地址都变成虚拟地址,MMU硬件开始自动完成查表和虚实地址转换 。
2.在OS初始化的后期,创建第一个用户进程 。在这个流程中,还需要创建一个页表,并将其地址赋给流程结构中的一个指针成员变量 。也就是说 , 每个进程应该有一个独立的页表 。3.当用户创建一个新进程时 , 子进程复制父进程的一个页表,然后随着程序的运行,页表的内容逐渐更新变化 。
4.系统处理内存寻址,内存寻址由操作系统管理和维护,以确保正常进程 。
存储器寻址概述
上图是内存管理的硬件结构,其处理流程如下:
a、cpu发起寻址请求 , 被MMU接受;
b、如果在TLB缓冲区找到MMU,直接用映射后的物理地址读入主存;如果没有找到,则需要从当前进程的页表中查询,如果找到,则返回更新TLB;;
C.如果在页表中没有找到 , 当发现虚拟地址还没有分配给物理地址空时,就会触发缺页中断 。这时它会检查这个虚拟地址对应的磁盘文件的内容,加载到内存中,在页表中建立映射关系 , 程序就可以继续执行了 。
【硬件编程 内存管理】知道了地址翻译的过程,VA到PA的映射过程就一目了然了:MMU得到VA后先在TLB中查找,如果找不到匹配的PTE条目,就在外部页表中查找,替换成TLB;检查VA指令是否符合PTE条目中对访问权限的限制,如果不符合,则不继续 , 并抛出异常;满足要求后,根据VA的地址分段查询页表,保持偏移量(广义)不变,合并物理地址发送出去 。
推荐阅读
- 痰迷心窍是精神病吗 痰迷心窍
- 1是偶数还是奇数 1是偶数还是奇数啊
- 电磁炉电路板多少钱一块 电路板多少钱
- 第五人格雪花碎片怎么获得 雪花碎片获得方法介绍
- 道家完整内丹功法 九转内丹术
- 腱子肉是人哪个部位,腱子肉 部位
- 烤箱做蛋糕视频教程 做蛋糕怎么做视频
- 0.8元等于多少角 5元5角等于多少角
- 高雅的运动 速度最快的球类运动