内存管理-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编辑  收藏  举报

导航