RK3568平台 内存的基本概念

一.Linux的Page Cache

page cache,又称pcache,其中文名称为页高速缓冲存储器,简称页高缓。page cache的大小为一页,通常为4K。在linux读写文件时,它用于缓存文件的逻辑内容,从而加快对磁盘上映像和数据的访问。

RK3568平台 内存的基本概念_第1张图片

二.Linux内存泄漏 

内存泄漏一般指的是堆内存的泄漏。堆内存是指程序从堆中分配的、大小任意的(内存块的大小可以在程序运行期决定)、使用完后必须显示的释放的内存。应用程序一般使用malloc、realloc、new 等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用 free 或 delete 释放该内存块。否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。

三.Linux内核MMU

MMU是 MemoryManagementUnit 的缩写即,内存管理单元. 针对各种CPU, MMU是个可选的配件. MMU负责的是虚拟地址与物理地址的转换. 提供硬件机制的内存访问授权。

RK3568平台 内存的基本概念_第2张图片

四.应用程序的内存布局 

RK3568平台 内存的基本概念_第3张图片

代码段:对应着程序中的代码(函数),代码段在linux中又叫文本段(.text)。

数据段:显式初始化为非0的全局变量,显式初始化为非0的static局部变量。

bss段存:显式初始化为0或者未显式初始化的全局变量,显式初始化为0或未显式初始化的static局部变量。

堆:C语言中什么样变量存在堆内存中?C语言不会自动向堆中存放东西,堆的操作是程序员自己手工操作的。程序员根据需求自己判断要不要使用堆内存,用的时候自己申请,自己使用,完了自己释放。

文件映射区:文件映射区就是进程打开了文件后,将这个文件的内容从硬盘读到进程的文件映射区,以后就直接在内存中操作这个文件,读写完了后在保存时再将内存中的文件写到硬盘中去

栈:栈内存区,局部变量分配在栈上;函数调用传参过程也会用到栈,递归函数运行也在栈上

内核映射区:内核映射区就是将操作系统内核程序映射到这个区域了。

五.从内核角度看内存管理

RK3568平台 内存的基本概念_第4张图片

六.linux缓存机制

为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果没有则通过驱动程序直接操作磁盘。

缓存机制优点:减少系统调用次数,降低CPU上下文切换和磁盘访问频率。

CPU上下文切换:CPU给每个进程一定的服务时间,当时间片用完后,内核从正在运行的进程中收回处理器,同时把进程当前运行状态保存下来,然后加载下一个任务,这个过程叫做上下文切换。实质上就是被终止运行进程与待运行进程的进程切换。

你可能感兴趣的:(瑞芯微,java,linux,开发语言)