操作系统-物理内存和虚拟内存

https://blog.****.net/qq_40840459/article/details/81054164

物理内存就是物理上,真实的内存有多少;物理地址,地址对应的是总线,所以物理地址的大小跟总线的宽度相关。比如10根地址线则代表最大物理地址是2的10次方,1K的物理地址;

正在运行的一个进程,他所需的内存是有可能大于内存条容量之和的,比如你的内存条是256M,你的程序却要创建一个2G的数据区,那么不是所有数据都能一起加载到内存(物理内存)中,势必有一部分数据要放到其他介质中(比如硬盘),待进程需要访问那部分数据时,在通过调度进入物理内存。所以,虚拟内存是进程运行时所有内存空间的总和,并且可能有一部分不在物理内存中,而物理内存就是我们平时所了解的内存条。有的地方呢,也叫这个虚拟内存为内存交换区。

Linux下虚拟内存的结构图:

以32位机为例,我们上图看到的进程虚拟存储器占用3G虚拟内存空间,内核虚拟存储器占用1G的虚拟内存空间操作系统-物理内存和虚拟内存

下面我们来解答这个问题:

假设你的计算机是32位,那么它的地址总线是32位的,也就是它可以寻址0~0xFFFFFFFF(4G)的地址空间,但如果你的计算机只有256M的物理内存0x~0x0FFFFFFF(256M),同时你的进程产生了一个不在这256M地址空间中的地址,那么计算机该如何处理呢?

操作系统的分页机制完成,页表,页帧,偏移地址

 

虚拟地址    <->    MMU(转化成)  <->   物理地址