系统,物理内存、虚拟内存、swap

    我们知道,直接从物理内存读写数据要比从硬盘读写数据快的多,因此,我们都希望所有数据的读取和写入都是在内存完成,但是内存跟硬盘相比,毕竟是有限的,这样也就引出了物理内存和虚拟内存的概念

 

    物理内存就是系统硬件提供的内存大小,是真正的内存,相对于物理内存,在linux下还有一个虚拟内存的概念,虚拟内存是为了满足物理内存不够而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存,而用作虚拟内存的磁盘空间被称作为交换空间(swap space)

 

    作为物理内存的扩展,Linux会在物理内存不够的时候去使用交换分区的虚拟内存,也就是说,内核会将暂时不用的内存块信息写到交换空间,这样以来,物理内存得到了释放,这块内存就可以用于其他目的,当需要用到原始的内容的时候,这些信息就会被从交换空间读取到物理内存

 

    Linux内存管理采用的是分页存取机制,为了保证物理内存能得到充分的利用,内核会在适当的时候将物理内存中不经常使用的数据块自动交换到虚拟内存中,而将经常使用的信息保留到物理内存

在深入了解Linux内存运行机制的时候,需要了解一下几个方面:

    1、Linux系统会不时的进行页面交换操作,以保持尽可能多的空闲物理内存,即使并没有什么事情需要内存,Linux也会交换出暂时不用的内存页面,这可以避免等待交换所需的时间

    2、Linux进行页面交换是有条件的,不是所有的页面在不用的时候都交换到虚拟内存,Linux内核根据“最近最经常使用”算法,仅仅将一些不经常使用的页面文件交换到虚拟内存,有时我们可以看到这么一个现象,Linux物理内存还有很多,但是交换空间也使用了很多。其实,这并不奇怪,例如,一个占用很大内存的进程运行的时候,需要消耗很多内存资源,此时就会有一些不经常使用的页面文件被交换到虚拟内存中,但后来这个占用很多内存的进程结束并释放了很多内存时,刚才被交换出去的页面文件并不会自动的交换到物理内存,除非有这个必要,那么此刻系统物理内存就会空闲很多,同事交换空间也在被使用

    3、交换空间的页面在使用的时候首先会被交换到物理内存中,如果此时没有足够的物理内存来容纳这些页面,它们又会被马上交换出去,如此以来,虚拟内存中可能没有足够空间来存储这些交换页面,最终会导致linux出现假死机,服务异常等问题,Linux虽然可以在一段时间内自行恢复,但是恢复后的系统已经基本不可用了

 

 

 

评论

© 91ziyuan | Powered by LOFTER