-
-
[旧帖]
[讨论]对虚拟地址空间和虚拟内存的理解
0.00雪花
-
发表于:
2007-12-10 22:05
8834
-
[旧帖] [讨论]对虚拟地址空间和虚拟内存的理解
0.00雪花
虚拟内存
首先,什么是虚拟内存呢?
回答这个问题要从另外一个问题入手,也就是为什么有虚拟内存这个概念,我们知道一个程序要被执行,就要将他全部放入内存中,这样cpu才能访问到,一般情况下我们的物理内存也就是插在主板上的条子,比如说我的物理内存是512M,我现在要执行一个大小为1G 的程序,按照我们前面说的,要运行这个程序就需要把这个程序全部放入内存,但是现在我们的内存只有512M,很显然放不下,简单点说就是不能执行,为了让我们的程序能执行,很显然我们就要想办法构造一个大于1G或者更大的内存出来,将我们的程序全部放进去,然后执行,怎么来构造这个内存呢?大家想想,我们的硬件系统中能作为存储器并且有很大空间的就只有硬盘,因此我们在硬盘上找到一个足够大的空间再加上我们的物理内存就构造出了这个大于1G的内存,那么我们就把这个内存叫做虚拟内存。现在应该知道什么是虚拟内存了吧,也就是物理内存加上硬盘上的一部分空间,从我个人的观点看,其实构造虚拟内存的目的就只有一个,那就是为了运行比实际的物理内存更大的程序!
虚拟地址空间:
操作系统为每个进程都分配4GB的虚拟地址空间,在分配之初,这4GB的虚拟地址空间是没有任何实际意义的,也就是说只有4GB范围内的地址,就好比我现在有100个盒子,而我给每个人分配100个盒子的编号0~~~99,你现在只有盒子的编号,而没有盒子,所以你不能往盒子里面放东西,所以0~99的盒子编号是没有实际意义的,要想往盒子里放东西,我们就要用我们的盒子去具体化这0~~99的编号,比如说现在想要编号80的盒子能放东西,那么我们就要找到一个盒子放到编号为80的地方,这样的话80号盒子就能放东西了;同理,我们的4GB地址空间也是一样,如果想要这4GB的地址上能放上代码或则数据,那我们就要让这4GB的地址对应某个实际的物理存储器,这个物理存储器可以是虚拟内存或则存储在硬盘上的可执行文件本身;
希望大家说说看法!!!!!!!!!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课