内存管理
文章平均质量分 93
R-Linux
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
CMA详解
CMA(Contiguous Memory Allocator),译为连续内存分配器,旨在满足需要分配连续物理内存的需求,如camera, 视频编解码等。CMA出现之前,kmalloc可以满足常规的连续物理内存分配请求,但系统运行时间长了必然会导致内存碎片化,此时再想申请大块连续的物理内存就难上加难了。所以为了满足此类需求,我们需要预留出来一块内存,早期可以使用ioremap来映射一段私有内存,供后续使用。但缺陷在于当设备暂时不使用时,这段内存其他设备仍然无法使用,他不会将其还给操作系统!原创 2025-03-20 22:21:51 · 660 阅读 · 0 评论 -
早期内存分配器 -- memblock
MEMBLOCK_NONE = 0x0, /* 无特殊要求 */MEMBLOCK_HOTPLUG = 0x1, /* 可热插拔的内存区域,后续可能会被移除 */MEMBLOCK_MIRROR = 0x2, /* 镜像区域 */MEMBLOCK_NOMAP = 0x4, /* 不添加到内存直接映射区域,将其视为reserved mem */MEMBLOCK_DRIVER_MANAGED = 0x8, /* 始终由驱动来管理的,不会被视为是系统RAM */原创 2025-03-24 22:34:42 · 895 阅读 · 0 评论 -
Kmalloc详解
用于在kernel中为object申请小于一页的内存。object就是经常会用到的一些结构体,如task_struct。提前将内存分割成不同大小的块,用于一些常用的内存请求,尽可能避免了外部内存碎片,要知道从伙伴系统申请内存至少都要一页,就是4kb,这对于一些可能只需要几字节的需求来说太大了!具体可以去看下slab和伙伴系统的原理,这里不做详述。kmalloc是一个总的kernel内存申请的调用接口,根据申请内存的大小来判断是从伙伴系统申请还是从slab分配器申请。大于2。原创 2025-03-10 22:19:54 · 2234 阅读 · 0 评论
分享