linux内核中分配4M以上大内存的方法
来源:互联网 发布:ubuntu 查看配置 编辑:程序博客网 时间:2024/06/07 03:13
在内核中, kmalloc能够分配的最大连续内存为2的(MAX_ORDER
-1)次方个page(参见alloc_pages函数, "if (unlikely(order >= MAX_ORDER)) return NULL;"), page的大小一般是4K bytes,MAX_ORDER
缺省定义为11, 所以如果不修改内核, kmalloc能够分配的最大连续内存一般是4M bytes.
内核中获取4M以上大内存的方法有三种:
1.修改MAX_ORDER
, 重新编译内核
2.内核启动选型传递"mem=
"参数, 如"mem=80M", 预留部分内存; 然后通过request_mem_region和ioremap_nocache将预留的内存映射到模块中. 需要修改内核启动参数, 无需重新编译内核. 但这种方法不支持x86架构, 只支持ARM, PowerPC等非x86架构.
3.在start_kernel中mem_init函数之前调用alloc_boot_mem函数预分配大块内存, 需要重新编译内核.
在不重新编译内核的前提下, x86架构下内核中只能获取到最大4M的连续内存, 或者使用vmalloc获取4M以上的非连续内存. 而且, 无论是kmalloc还是vmalloc, 分配的内存越大, 失败的可能性越大; 系统启动后分配内存的时间越早(此时空闲内存越多, 分部也越规律), 成功的可能性越大.
- linux内核中分配4M以上大内存的方法
- linux内核中分配4M以上大内存的方法
- linux内核中分配4M以上大内存的方法
- 在内核中分配物理地址连续的大内存.
- Linux malloc大内存的方法
- 如何使32bit Linux主机支持4GB以上的大内存
- Windows(x86)下大内存的分配
- 在 Linux 和 Windows 下给 Tomcat 分配大内存设置方法
- 在 Linux 和 Windows 下给 Tomcat 分配大内存设置方法
- 32位Ubuntu中支持超过4G的大内存的方法
- 32位Ubuntu中支持超过4G的大内存的方法
- Nginx中slab分配大内存时需要注意的地方
- linux内存管理之伙伴系统分析(大内存分配)
- 用__get_free_pages分配大内存
- 内核大内存管理关闭
- 关闭内核大内存管理
- linux内核中常见的内存分配方法
- linux系统maclloc大内存的方法(超过物理内存的大小)
- 时间管理的小技巧
- 我讨厌单元测试:滕振宇谈如何进行单元测试
- 何谓PCI总线技术
- 学习jquery好的网址---张子秋
- 数据挖掘-基于贝叶斯算法及KNN算法的newsgroup18828文本分类器的JAVA实现(下)
- linux内核中分配4M以上大内存的方法
- 多态的体现好处特点
- 邻接表(转)
- CCTYPE函数系列
- 编写android程序时:Error in an XML file: aborting build"错误的解决办法
- SCCM 的 superflow
- 如何使用Core Text创建一个简单的杂志图书App
- Windows Azure 开发动手训练营,4月19-20上海,4月25-26日北京
- tomcat web应用服务器原理讲解分析 待续