要讲虚拟内存,需要先讲几个概念
1. 逻辑地址:逻辑地址是程序产生的段的偏移地址。example: 在C/C++ 中声明一个指针,通过&操作,可以读取这个指针本身值,这个就是逻辑地址,他是相对于当前进程数据段的地址。
2. 线性地址:逻辑地址到物理地址变换的中间层。程序代码会产生逻辑地址,也就是段的偏移地址,加上段的基地址就可以构成线性地址。如果没有启用分页机制,那么线性地址就是物理地址。
3. 物理地址:是CPU外部总线寻址物理内存的地址信号,是寻址的最终结果。如果启用了页机制,那么线性地址会通过页目录和页表项变换成物理地址。
逻辑地址--->(段表项)--->线性地址--->(页表项)----->物理地址.