聊聊:Linux的内存管理机制

导读 常常遇到一些刚接触Linux的新手会问内存占用怎么那么多?
在Linux中常常发现空闲内存不多,彷佛全部的内存都被系统占用了,表面感受是内存不够用了,其实否则。

这是Linux内存管理的一个优秀特性,在这方面,区别于Windows的内存管理。主要特色是,不管物理内存有多大,Linux 都将其充份利用,将一些程序调用过的硬盘数据读入内存,利用内存读写的高速特性来提升Linux系统的数据访问性能。而Windows是只在须要内存时,才为应用程序分配内存,并不能充分利用大容量的内存空间。换句话说,每增长一些物理内存,Linux都将能充分利用起来,发挥了硬件投资带来的好处,而Windows只将其作为摆设,即便增长8GB甚至更大。html

Linux的这一特性,主要是利用空闲的物理内存,划分出一部份空间,作为cache、buffers ,以此提升数据访问性能。linux

页高速缓存(cache)是Linux内核实现的一种主要磁盘缓存。它主要用来减小对磁盘的I/O操做。具体地讲,是经过把磁盘中的数据缓存到物理内存中,把对磁盘的访问变为对物理 内存的访问。算法

磁盘高速缓存的价值在于两个方面:
聊聊:Linux的内存管理机制聊聊:Linux的内存管理机制
第一,访问磁盘的速度要远远低于访问内存的速度,所以,从内存访问数据比从磁盘访问速度更快。缓存

第二,数据一旦被访问,就颇有可能在短时间内再次被访问到。性能

下面来了解下Linux内存管理机制:设计

1、物理内存和虚拟内存3d

咱们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,所以,咱们但愿全部数据的读取和写入都在内存完成,而内存是有限的,这样就引出了物理内存与虚拟内存的概念。htm

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

做为物理内存的扩展,Linux会在物理内存不足时,使用交换分区的虚拟内存,更详细的说,就是内核会将暂时不用的内存块信息写到交换空间,这样以来,物理内存获得了释放,这块内存就能够用于其它目的,当须要用到原始的内容时,这些信息会被从新从交换空间读入物理内存。进程

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

要深刻了解Linux内存运行机制,须要知道下面提到的几个方面:

Linux系统会不时的进行页面交换操做,以保持尽量多的空闲物理内存,即便并无什么事情须要内存,Linux也会交换出暂时不用的内存页面。这能够避免等待交换所需的时间。

Linux进行页面交换是有条件的,不是全部页面在不用时都交换到虚拟内存,Linux内核根据”最近最常用“算法,仅仅将一些不常用的页面文件交换到虚拟内存,有时咱们会看到这么一个现象:Linux物理内存还有不少,可是交换空间也使用了不少。其实,这并不奇怪,例如,一个占用很大内存的进程运行时,须要耗费不少内存资源,此时就会有一些不经常使用页面文件被交换到虚拟内存中,但后来这个占用不少内存资源的进程结束并释放了不少内存时,刚才被交换出去的页面文件并不会自动的交换进物理内存,除非有这个必要,那么此刻系统物理内存就会空闲不少,同时交换空间也在被使用,就出现了刚才所说的现象了。关于这点,不用担忧什么,只要知道是怎么一回事就能够了。

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

所以,合理规划和设计Linux内存的使用,是很是重要的.

原文来自:  https://www.linuxprobe.com/linux-neicun-guanli.html

相关文章
相关标签/搜索