内存管理-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   Hello-World3  阅读(36)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2018-07-01 v4l2框架函数调用关系
2017-07-01 select poll epoll

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示