虚拟地址与物理地址的区别是:物理地址是指实际存储在内存中的地址,它可以直接被硬件访问。物理地址是固定的,并且受到物理内存大小的限制。虚拟地址是指软件视图中的内存地址,它是逻辑地址,不受物理内存大小的限制。
一、虚拟地址与物理地址的区别
虚拟地址和物理地址是计算机内存管理的两个概念。
物理地址是指实际存储在内存中的地址,它可以直接被硬件访问。物理地址是固定的,并且受到物理内存大小的限制。
虚拟地址是指软件视图中的内存地址,它是逻辑地址,不受物理内存大小的限制。虚拟地址通常是连续的,因此程序员可以使用连续的虚拟地址,而不必考虑实际内存中的分布情况。
操作系统使用内存管理单元(MMU)将虚拟地址映射到物理地址。这样,当程序访问虚拟地址时,实际上是访问物理地址。
物理地址是放在寻址总线上的地址。放在寻址总线上,如果是读,电路根据这个地址每位的值就将相应地址的物理内存中的数据放到数据总线中传输。如果是写,电路根据这个地址每位的值就在相应地址的物理内存中放入数据总线上的内容。物理内存是以字节(8位)为单位编址的。
总的来说,虚拟地址与物理地址的主要区别在于虚拟地址是逻辑地址,而物理地址是实际地址。虚拟地址的优点在于程序员可以使用连续的地址,而不必考虑实际内存分布情况,并且操作系统可以隐藏实际内存限制。
延伸阅读:
二、什么是虚拟地址
虚拟地址是Windows程序时运行在386保护模式下,这样程序访问存储器所使用的逻辑地址称为虚拟地址,与实地址模式下的分段地址类似,虚拟地址也可以写为“段:偏移量”的形式,这里的段是指段选择器。
Windows 2000 使用基于分页机制的虚拟内存。每个进程有4GB的虚拟地址空间。基于分页机制,这4GB地址空间的一些部分被映射了物理内存,一些部分映射硬盘上的交换文件,一些部分什么也没有映射。程序中使用的都是4GB地址空间中的虚拟地址。而访问物理内存,需要使用物理地址。
CPU启动保护模式后,程序运行在虚拟地址空间中。注意,并不是所有的“程序”都是运行在虚拟地址中。CPU在启动的时候是运行在实模式的,Bootloader以及内核在初始化页表之前并不使用虚拟地址,而是直接使用物理地址的。
以上就是关于虚拟地址与物理地址的区别的内容了,希望对大家有帮助。