硬件编程 内存管理( 二 )
2.在操作系统初始化的后期,创建第一个用户进程 。在这个过程中,还需要创建一个页表,并将其地址赋给进程结构中的指针成员变量 。也就是说,每个进程必须有自己的页表 。3.当用户创建一个新进程时,子进程复制父进程的一个页表,然后页表的内容随着程序的运行逐渐更新和改变 。
4.系统处理内存寻址,内存寻址由操作系统管理和维护,以确保正常进程 。
存储器寻址概述图
上图显示了内存管理的硬件结构和处理流程:
a、cpu发起寻址请求,由MMU处理;
b、如果在TLB缓冲区中找到MMU,直接使用映射后的物理地址从主存中读取;如果没有找到,则需要从当前进程的页表中查询,如果找到,则返回更新TLB;;
C.如果页表中没有虚拟地址,当发现虚拟地址还没有分配给物理地址空时,就会触发缺页中断 。此时,这个虚拟地址对应的磁盘文件的内容会被检查,加载到内存中,并在页表中建立映射关系,这样程序才能继续执行 。
了解了地址翻译的过程,VA到PA的映射过程就清晰了:MMU先在TLB查找VA,如果找不到匹配的PTE条目,就在TLB查找外部页表替换;根据PTE条目中访问权限的限制,检查该VA指令是否合规,如果不合规,则不继续,并抛出异常exception;满足要求后,根据VA的地址段查询页表,保持偏移量(广义)不变,合并物理地址,发送出去 。
【硬件编程 内存管理】
推荐阅读
- JavaScript 内存管理:如何避免常见的内存泄漏并提高性能
- 联想编程笔记本电脑排名 联想笔记本电脑排名
- 怎么看显卡内存占用率?windows7怎么看显卡内存?急!!!帮帮忙啊?
- 谷歌驱动器下载网址~~a卡掉驱动谷歌浏览器硬件加
- 怎么看内存有没有超频?内存超频有意义吗?
- 4g内存虚拟内存设多少 win7虚拟内存怎么设置最好
- 怎么自己编写程序 程序编程
- vb编程实例讲解、告诉我一些简单的vb编程代码?
- 西门子编程软件怎么下载安装 s7 200编程软件
- 16g内存推荐虚拟内存 虚拟内存如何设置
