2015.4.8 物理和虚拟地址

在计算机中,每个程序要是想先运行,首先要加载到内存中,但是内存是有限的,也就是说我程序的大小也是受到了限制的,这样并不好。因此,发明了一种思想,这是一个抽象概念:虚拟存储器。当我需要数据或者程序的时候,再加载到我的内存中执行,否则就存储在硬盘上,但是如果我要是想调用程序中的某一部分代码的时候,由于我的程序原本很大,但是内存存不下,因此我需要把程序分隔成小块分入内存中。但是我如何找到呢?对于内存的每个数据块,都有一个物理地址,这是和硬件相关的,对于每个程序,我们可以把每个数据块也进行线性排序,这样我们可以人工标记一个逻辑地址。于是,当我想要调用程序的某些代码的时候,我需要根据逻辑地址,进行转化,到内存中区查找物理地址中的数据。

这就是想了虚拟地址转化到物理地址,而这个转化称作地址翻译,是在MMU存储器管理单元中实现的。

我们可以将逻辑地址和物理地址看做是两个空间,每个程序可以有自己很大的逻辑地址,这与硬件无关,就好像我们的个人梦想可以和现实无关一样。当我需要调用程序某一块的时候,其实虚拟存储的思想就是一个映射,把逻辑映射到物理。就好像我们在实际生活中只能调取梦想中的一部分似的。这个比喻不是特别恰当,不过可以帮助理解,我认为。

你可能感兴趣的:(2015.4.8 物理和虚拟地址)