原理:
电脑上多个程序,各程序被编译连接生成可执行文件(机器指令程序)----在磁盘中存储时各程序被切分成多个部分(称为“页”),每一页都对应一个虚拟地址(其实就是对每一页编号)-----由于物理内存有限(运存)所以各程序在执行时只是把此时要执行的页加载到物理内存中去(其他页还是在外存中)-----外存和内存和虚拟地址之间建立一个映射表-----cpu在运行时从内存中取指令执行(CPU取指令是通过虚拟地址来寻找要执行的指令的)----CPU中的地址转换单元(MMU)通过映射表把虚拟地址查找指令的(外存)物理地址或(内存)物理地址(如果发现要执行的指令在内存中就直接加载到CPU计算,如果在外存中就匆匆忙忙把该指令加载到内存中,并更新映射表,再从内存中加载到CPU中执行)。
注: 所谓“虚拟内存”,是对于CPU计算单元来说的,CPU从内存取指令时用的是虚拟地址,它并不知道这个地址是虚拟的。
补充: 虚拟内存把程序分为各个部分(称为“页”每个“页”的大小是4K),物理内存(即内存)中实际的空间也划分为各个部分(称为“页框”),他们之间通过映射表(页表)对应起来。系统为每个程序分配4G的虚拟内存。这样每个程序都认为自己拥有4G内存可以使用。