下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、上周针对一个内存 fragment issue 的研究,让我开始重新 总结 kernel 里对内存分配的方式和方法,如有不对请指教: 页分配 unsigned long _get_free_pages(gfp_t gfp_mask, unsigned int order) 直接从 buddy 系统中获得原始页。最原始的分配方式。 slab 分配器 1. 通用 cache void *kmalloc(size_t size, gfp_t flags) kmalloc 基于以下几种 size 的 mem cache: 32, 64, 128, 256, 512, 1,024, 2,048, 4,0
2、96,8,192, 16,384, 32,768, 65,536 和 131,072 bytes。其本质也是 调用 kmem_cache_alloc 来分配object。所以 kmalloc 次最大可分配的 size为 128KB °kmalloc 分配速度很快,在分配时需注意 gfp flag参数:在不 interrupt 上下文( ISR, softirq, tasklet )及不可睡 眠上下文使用 GFP_ATOMIC 。内核还增加了内存清零的分配函数:kzalloc 。 2. 专用 cachekmem_cache_create()void *kmem_cache_alloc(
3、struct kmem_cache *cachep, gfp_t flags)如果你需要频繁的分配和释放某个结构,建议不要采用kmalloc ,而是自己在 slab 系统中创建 memory cache。 指定该结构的 object size。分配时使用 kmem_cache_alloc。 同样的 slab object 大小也有限制,一般情况下一个 MAX_OBJ_ORDER 是 5,也就是 32 个页, 128KB 。 非连续内存分配 void *vmalloc(unsigned long size) 超过128KB的内存显然不能使用slab分配,并且当申请的连续内存大小不能在 buddy
4、 系统中得到满足,那么 就需要使用 vmalloc 。 vmalloc 为了把物理的非连续页一个个 映射,从而导致比直接内存映射大的多的 后援缓冲区抖动。除非需要特别大的内存,否则尽量不要使 用 vmalloc 。 基于 DMA 分配 void * dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *handle, gfp_t gfp)在某些 arch 中,可以使用 dma_alloc_coherent 来分配 DMA 专用内存。列入在 arch/arm/mm/consistent.c中,该函数先分配最小可满足size
5、的2Aorder内存,然后释放 2A°rder-size 多余的页给 buddy。而 arch/i386/ kernel/pci-dma.c 中,则直接分配 2Aorder 块内存。 直接映射 分配 ioremap(unsigned long phys_addr, size_t size) int remap_pfn_range(struct vm_area_struct *vma, unsigned long addr,unsigned long pfn, unsigned long size, pgprot_t prot) 在某些体系结构中,我们可以保留 memory map 段上的某一 个区域,作为 dma 或其他设备的专有内存。这段内存并不在 kernel buddy 的控制之下(没有被放入me
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年青岛黄海学院单招综合素质考试题库含答案详解(预热题)
- 2026年闽北职业技术学院单招职业倾向性测试题库带答案详解(研优卷)
- 2026年闽北职业技术学院单招职业技能测试题库及答案详解(典优)
- 2026年顺德职业技术学院单招综合素质考试题库及完整答案详解
- 2026年阿拉善职业技术学院单招职业倾向性考试题库含答案详解(达标题)
- 2026年随州职业技术学院单招职业倾向性考试题库及答案详解(考点梳理)
- 2026年阳泉师范高等专科学校单招职业适应性测试题库附参考答案详解(基础题)
- 2026年青岛恒星科技学院单招职业技能考试题库含答案详解(研优卷)
- 2026年陕西省渭南市单招职业适应性考试题库附参考答案详解(b卷)
- 2026年青海农牧科技职业学院单招职业适应性测试题库附答案详解(完整版)
- 兽医中药在宠物临床上的运用分析
- 中外合作办学项目计划书
- 2026年内蒙古商贸职业学院单招职业技能测试题库必考题
- 2025年牡丹江大学单招职业适应性考试题库及答案详解(历年真题)
- 城市再生水管线工程技术方案
- 甲亢治疗新进展与临床实践
- 基于Python的健身房管理系统设计和实现的详细项目实例(含完整的程序GUI设计和代码详解)
- 2025年镇痛药行业分析报告及未来发展趋势预测
- 2025年USPTA网球教练认证备考题库及答案解析
- 免疫细胞储存合同范本
- 2024年中国中信金融资产江西分公司招聘2人笔试备考试题附答案详解(达标题)
评论
0/150
提交评论