子类_Memory
文章平均质量分 79
KrisFei
工作记录.
展开
-
vmalloc size分析
平台: msm8x25系统: android 4.1内核: 3.4.0概念由于系统的连续物理内存有限,这使得非连续物理内存的使用在linux内核中出现,这叫vmalloc机制。和前者一样,vmalloc机制中的虚拟地址也是连续的。 Vmallocinfo Vmalloc机制并不是狭义地指使用vmalloc函数分配,其他还有如iorema原创 2013-12-10 14:15:10 · 10534 阅读 · 0 评论 -
memory pool 原理及使用
chipset: msm8x25codebase: android4.1一、 初始化:int __init memory_pool_init(void){ int i; alloc_root = RB_ROOT; mutex_init(&alloc_mutex); for (i = 0; i < ARRAY_SIZE(mpools); i++) { mutex_原创 2013-01-23 16:23:37 · 2755 阅读 · 0 评论 -
ION基本概念介绍
chipset: MSM8X25Qcodebase: Android 4.1ION概念: ION是Google的下一代内存管理器,用来支持不同的内存分配机制,如CARVOUT(PMEM),物理连续内存(kmalloc), 虚拟地址连续但物理不连续内存(vmalloc), IOMMU等。用户空间和内核空间都可以使用ION,用户空间是通过/dev/ion来创建client的原创 2013-02-18 17:35:13 · 9326 阅读 · 6 评论 -
ION原理分析
平台: MSM8x25Q系统: Android4.1从上一篇ION基本概念中,我们了解了heaptype, heap id, client, handle以及如何使用,本篇再从原理上分析下ION的运作流程。 MSM8x25Q平台使用的是board-qrd7627.c,ION相关定义如下:/** * These heaps are listed in the o原创 2013-02-27 17:29:54 · 10676 阅读 · 1 评论 -
PMEM原理分析
Chipset:MSM8x25QCodebase:Android 4.1PMEM使用:PMEM使用比较简单,分单进程使用和共享进程使用同一块PMEM。单进程使用:1. int master_fd = open(“/dev/pmem_xxx”,O_RDWR, 0);2. 然后再mmap就可以使用了。进程间共享PMEM:进程A:原创 2013-03-04 18:14:28 · 4017 阅读 · 3 评论 -
struct meminfo分析
Chipset:MSM8x25QCodebase:Android 4.1Linux Kernel: 3.4.0 在linux Kernel中,一开始内存相关的信息是由struct meminfo来保存的,每个物理连续的内存区域被保存为meminfo中的一个元素,也就是说在Linux使用中,整块物理内存可能是不连续的,可能其中某一中间区域是被其他cpu给使用掉了。原创 2013-03-18 19:52:28 · 3494 阅读 · 1 评论 -
bootmem allocator分析
Codebase: android 4.1Kernel: 3.4.0Chipset: msm8x25q 在系统启动时,内存的伙伴系统/slab算法还没有初始化之前,系统也需要来作内存管理,分配一些核心数据结构,bootmem分配器就实现了该功能,它用于在启动阶段早期分配内存。Bootmem分配器使用位图来管理页,位图数量和系统的物理内存也数量是相同的。当页被使用时,就标记为1,原创 2013-03-21 21:43:35 · 2323 阅读 · 0 评论 -
伙伴系统分析
chipset: MSM8X25QCodebase: Android4.1Kernel: 3.4.0 基本概念: 关于伙伴系统算法的原理还是比较好理解的,这里不作复数。直接看下关键数据结构。struct zone {~~snip struct free_area free_area[MAX_ORDER]; //每一阶原创 2013-04-07 18:17:52 · 3306 阅读 · 0 评论 -
高端内存永久映射分析
chipset: MSM8X25QCodebase: Android4.1Kernel: 3.4.0 基本概念: 当你需要将高端页面长期映射到内核空间的时候,就要使用Kmap函数来实现,即高端内存永久映射。这样避免页表和TLB的更新而导致资源的占用。 使用的时候一般先通过alloc_page(__GFP_HIGHMEM)申请一个page,然后原创 2013-04-24 18:00:03 · 3087 阅读 · 2 评论 -
OOM(out_of_memory) killer分析
Chipset: MSM8X25QCodebase: Android4.1Kernel: 3.4.0 概念: OOMkiller,即out of memory killer,是linux下面的一种管理当内存耗尽时的处理机制。当内存较少时,OOM会遍历整个进程链表,然后根据进程的内存使用情况以及它的oom score值最终找到得分较高的进程,然后发送kill信号将原创 2013-04-27 16:47:38 · 4130 阅读 · 0 评论 -
Low Memory Killer分析
Chipset: MSM8X25QCodebase: Android4.1Kernel: 3.4.0 概念: Lowmemory killer是android基于oom killer做了改进。两者区别:Oom killer: 当系统内存不足时,会根据当前进程的内存使用状况以及oom score来Kill掉某个进程。Low memorykiller: 会周原创 2013-04-29 13:19:51 · 4019 阅读 · 0 评论 -
保留内存(PMEM/ION)申请
chipset: msm8x25codebase: android4.1PMEM是高通使用的固定内存分配机制,ION是Google为了使各家厂商使用同一种固定内存分配机制而出现的产物。当然在ION使用的情况下,PMEM也是可以被定义使用的,主要看用户空间选择哪个了,不过两者并存实在没这个必要,毕竟很浪费内存。先看下kernel在开机的时候是如何申请这部分内存作为PMEM使用原创 2013-01-16 13:55:49 · 3994 阅读 · 0 评论