内存管理-0-开篇
一、什么是内存管理
1. 基础内存管理可以大致分为5块
(1) 物理内存管理
node、zone、page、buddy-system、slab
(2) 虚拟内存管理
虚拟内存分用户空间和内核空间,用户空间又分为很多段(代码段、数据段、栈、堆、mmap映射区、动态共享库等等); 内核空间也是分为很多区域的,比如低端内存、高端内存、固定映射区、动态映射区等等。
(3) MMU、页表、TLB
只有测彻底理解了页表,才能理解内存管理。注意一级页表、二级页表、段映射页表、格式、保存位置、如何更新等等。理解页表后,很多基于页表的上层封装与实现就可以很快很好的理解了,比如内存的各种映射、内存的各种申请与释放。
进行虚拟地址到物理地址的转换的时候,是需要软件和硬件共同参与与维护的,包括内核、应用程序、MMU、CPU.
(4) 内存申请与释放接口
(5) 映射机制底层实现
文件映射、匿名映射、IO寄存器映射,磁盘映射虚拟地址、物理内存映射虚拟地址、寄存器映射虚拟地址、设备的一片缓存映射虚拟地址,本质都是一样的,核心都是一样的。
二、内存硬件电路与接口
SRAM地址线是满的,可以直接和CPU地址线相连。DDR SDRAM 的地址线较少,通过多次发送地址,拆分成行地址和列地址,不能直接与CPU地址线相连,需要接一个控制转换器,因此较慢,价格便宜,容量大,是目前的主流。
三、相关概念
1. 内存泄露
广义内存泄露:包括内存碎片化,有内存但分配不出大块内存。
狭义内存泄露:申请了单忘记释放了,失去了这片内存的控制权。
posted on 2024-07-01 16:24 Hello-World3 阅读(17) 评论(0) 编辑 收藏 举报