物理地址(空间)与虚拟地址(空间)
作者声明:此文有不严谨的地方,望读者取其所需即可!
注:这里我们以32位CPU为例,来简单的说明这个复杂的问题。
一、物理地址(空间)
因为CPU是32位的,其地址总线是32位的,所以其地址总线可编码的个数是2^32(4G),这2^32个物理地址的集合就是物理地址空间。这与38译码器的道理是一样的,这一点很好理解。
二、虚拟地址(空间)
大多数计算机使用8位的块,或者叫做字节(Byte),来作为最小的可寻址的存储器单元,而不是访问存储器中单独的位。
机器级程序将存储器视为一个非常大的字节数组,称为虚拟存储器。存储器的一个字节都由唯一的数字来标识,称为它的地址(虚拟地址)。所有可能虚拟地址的集合就称作虚拟地址空间。
——引自《深入理解计算机系统》P23
从上面这段话,我们可以得到2个信息:
1、虚拟地址依赖于“唯一的数字标识”。
2、虚拟地址空间依赖于“所有可能虚拟地址的集合”
稍稍提炼一下,其实这就是说:虚拟地址空间就是数字可能的表示范围。
对于32位CPU而言,数据总线是32位的,所表示的数据或者说字长是32位的。所以数字的可能表示范围就是2^32(4G)。也就是说,虚拟地址空间是4G。
小小结:
物理地址空间的大小是由地址总线决定的。
虚拟地址空间的大小是由字长决定的。
以上是一些我的个人见解,若有不尽之处,望不吝赐教。
更多精彩资讯,请扫码关注