在计算机系统中,经常会听到这几个词:真实的、虚拟的、透明的、被覆盖。今天在《C专家编程》这本书中,看到了对这几概念的解释,个人感觉很是经典与到位。

   真实:在计算机系统中真实存在,并且你也能看得到的就是真实的。比如:内存、显示器、磁盘、CPU、寄存器等,真实存在并且我们也能看得到。

   虚拟:在计算机系统中不存在,但是你能看得到,那他就是虚拟的。比如:现在操作系统中经常采用的虚拟内存技术(这种技术把磁盘的一部份空间当作内存来使用)。当我们在运行一个很大的程序,假如这个程序有500MB左右,而我们的内存只有512MB左右,并且在这512MB的物理内存中有一部份时留给操作系统的内核程序使用的,一部份时留给其他的应用程序使用的。所以,在某一时刻中,内存中会存在:内核进程、多个用户进程。

    在这种情况下,一个500MB左右的内存想要直接全部加载进内存中去时不可能的。而实际的做法是:将内存中一段时间内没有使用的进程从内存中取出来将其放到磁盘的一部份空间中去(这部份磁盘空间叫做交换分区,顾名思义),然后将500MB左右的程序的一部份加载到内存中去开始运行,当在内存中的那一部分运行完以后,再将需要的部分在装入到内存中去,同时将一部份换入到交换分区中去。所以从用户或CPU的角度来看,好像整个程序都在内存之中,其实不是这样的。


   透明:在计算机系统中真实存在,但是看不见的就是透明的;


   内存破坏:去修改或释放正在使用的内存;

 

   内存泄漏:没有释放已经不再使用的内存;