虚拟内存与编译流程详解
1. 虚拟内存概述
1.1 效率问题
将缺失页面从交换文件加载到物理内存是一项代价高昂的操作,涉及操作系统大量工作。但该机制在内存使用和性能方面都表现出色,关键成功因素如下:
- 局部性原理 :由于局部性,很少需要加载额外页面。最坏情况下访问速度很慢,但这种情况极为罕见,平均访问时间较低。即很少尝试访问未加载到物理内存的页面。
- 硬件支持 :没有转换后页面地址缓存 TLB(Translation Lookaside Buffer),就必须一直使用转换机制。TLB 存储可能使用的页面的起始物理地址。若转换这些页面内的虚拟地址,可立即从 TLB 获取页面起始地址。即很少尝试转换近期未定位到物理内存的页面中的地址。
1.2 虚拟地址结构
每个 64 位虚拟地址由多个字段组成,实际地址只有 48 位,符号扩展为 64 位规范地址,其特征是左 17 位相等,不满足条件的地址使用时会被立即拒绝。48 位虚拟地址借助特殊表转换为 52 位物理地址。
物理地址空间划分为页帧,用于填充虚拟页面,页帧无间隙,起始地址以 12 个零位结尾。虚拟地址和物理页面的最低 12 位对应页面内的地址偏移,二者相等。虚拟地址的其他四部分表示转换表中的索引,每个表占 4KB 填充整个内存页面,每条记录 64 位,存储下一个表的起始地址的一部分和一些服务标志。
1.3 地址转换深入分析
地址转换过程如下:
- 从 cr3 获取第一个表(Page Map Level 4,PML4)的起始地址。
-
超级会员免费看
订阅专栏 解锁全文
2956

被折叠的 条评论
为什么被折叠?



