- 论坛徽章:
- 0
|
建议LZ先找本OS的书,好好看看虚拟地址和虚拟内存的区别。比如 <<Operating Systems: Internals and Design Principles>> 一书中的第7,第8章。
自学就要看经典的书,学会自己思考。
下面是我自己简单的解释:
虚拟地址的产生是由于INTEL CPU硬件决定的。它的含义是,在INTEL CPU保护模式下,指令使用的地址都是虚拟地址。都需要经过CPU的MMU(内存管理器)翻译过之后,才是真正的物理地址。这个也可以说和CPU的寻址能力有关。比如有32 BIT 地址线的CPU, 36 BIT 地址线的CPU等。即使现在的 64 BIT CPU,也没有把所有的64BIT 地址线都做上去,因为基本用不到那么多。
虚拟内存主要是由操作系统来控制的。CPU硬件也提供一些必要的支持。虚拟内存的大小和CPU寻址能力没有必然的关系。所谓虚拟内存,也就是“假的”内存。也就是把硬盘上的文件当作内存。为啥要这样呢?因为有的程序需要很大的内存(比如8G),但是机器上的物理内存没那么大(比如只有1G)。那么这时设计OS的人有2个选择,选择1,直接告诉程序,你没法运行。升级硬件吧。 选择2,用硬盘(可以很大)上的一个或者几个文件来代替物理内存,暂时保存些数据。这样的好处是程序还可以跑,但是会比较慢。因为硬盘的存取速度比真正的内存慢很多。
所以说不管你的虚拟内存,WINDOWS OR LINUX SWAP可以设置的多大,最理想的情况是不到万不得已不要用它。
罗嗦了半天,希望能对后面看贴的人有点用。如果有不对的地方 ,也欢迎大家指出。 |
|