博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux内存接口函数
阅读量:4194 次
发布时间:2019-05-26

本文共 1014 字,大约阅读时间需要 3 分钟。

get_free_pages 申请大块连续物理内存

kmalloc  kmem_cache_alloc   基于slab 的分配机制

dma_alloc_coherent  

vmalloc  建立非连续物理内存到虚拟地址的映射

ioremap   使用与物理地址已知的场合

alloc_mem 启动内核时预留一段,内核看不到 

void* alloc_bootmem(unsigned long size) 

 可以在Linux内核引导过程中绕过伙伴系统来分配大块内存。使用方法是在Linux内核引导时,调用mem_init函数之前用alloc_bootmem函数申请指定大小的内存。如果需要在其他地方调用这块内存,可以将alloc_bootmem返回的内存首地址通过

EXPORT_SYMBOL导出,然后就可以使用这块内存了。这种内存分配方式的缺点是,申请内存的代码必须在链接到内核中的代码里才能使用,因此必须重新编译内核,而且内存管理系统看不到这部分内存,需要用户自行管理。测试结果表明,重新编译内核后重启,能够访问引导时分配的内存块。 

 

 

分配原理

 

最大内存

 

其他

 

__get_free_pages 

直接对页框进行操作

 

4MB 

适用于分配较大量的连续物理内存

 

kmem_cache_alloc 

基于

slab

机制实现

 

128KB 

适合需要频繁申请释放相同大小内

存块时使用

 

kmalloc 

基于

kmem_cache_alloc

实现

 

128KB 

最常见的分配方式,需要小于页框

大小的内存时可以使用

 

vmalloc 

建立非连续物

理内存

到虚拟地址的映射

 

 

物理不连续,适合需要大内存,但

是对地址连续性没有要求的场合

 

dma_alloc_coherent 

基于

__alloc_pages

实现

 

4MB 

适用于

DMA

操作

 

ioremap 

现已

知物理

地址到

虚拟地址的映射

 

 

适用于物理地址已知的场合,如设

备驱动

 

alloc_bootmem

 

在启动

kernel

时,预留

一段内存,内核看不见

 

 

小于物理内存大小,内存管理要

参考资料:

常见内存操作函数:

http://wenku.baidu.com/link?url=ZuyWzYBcE6KYQ27XgjfA9zJTJhlX85opl_UqYum2KrnFUI-_7leAPXiEpPYDolLaoJdIXldEaDV-MEtH7ejuJmXl3cBiBm9jqOO2M4e8i

转载地址:http://etloi.baihongyu.com/

你可能感兴趣的文章
瑞银:将京东目标价上调至110美元 维持“买入”评级
查看>>
刘作虎:今年一加9系列不会送测DxO
查看>>
柴犬为什么总是被卡住狗头?
查看>>
特斯拉回应海南碰撞事故:地面湿滑 车主踩制动踏板幅度较轻
查看>>
经济学家建议茅台国外售价为国内2倍:未来最有可能走向世界的奢侈品牌
查看>>
华为P50渲染图曝光:后背丑哭?
查看>>
松下计划摆脱对特斯拉依赖 与其他汽车制造商合作
查看>>
华为说:要有光
查看>>
国际区块链专利统计:蚂蚁、平安、腾讯分列申请数前三名
查看>>
上市4年,现在苹果要停产它了
查看>>
月薪23333元!淘宝招募“首席鉴雕官”,只需天天哈哈哈哈哈
查看>>
缺货警告!小米这款手机已被骂惨...
查看>>
两年质保,只此一加!一加9系列推出两年质保
查看>>
前程无忧涉及网上黑市贩卖简历 盘前跌近5%
查看>>
上海通信管理局启动对手机清理软件问题调查
查看>>
独家=垄断?从抖音快手电影宣发签独家谈起
查看>>
广电总局拟规定设立未成年人频道
查看>>
315记者卧底销售公司成为二把手:待遇比原来高多了,差点不想回来
查看>>
永辉生活APP卖茅台只收款不发货,永辉超市回应...
查看>>
英特尔第11代台式机处理器发布:或将是14nm最后的倔强
查看>>