linux内核中分配4M以上大内存的方法
在内核中, 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内核不能识别u盘分区,一种在Linux内核中识别特定USB大容量存储设备的方法及系统与流程...
本发明涉配usb设备识别技术领域,特别是涉及一种在linux内核中识别特定usb大容量存储设备的方法及系统. 背景技术: 在linux系统下对usb设备进行管控,一般而言有两种方法,一种是阻断新插入设 ...
- Linux内核中使用内存检测
目录 一.slub内存检测 1.越界访问 2.释放后再访问 3.无效的释放 4.实验输出 二.KASAN 内存检测 1.数组越界 2.栈的越界访问 3.实验输出 一般的内存访问错误如下: 越界访问 访 ...
- Linux内核中常见内存分配函数
1. 原理说明 Linux内核中采用了一种同时适用于32位和64位系统的内存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系统中,用到了四级页表,如图2-1所示.四级页表分 ...
- Linux内核中内存分配函数
1.原理说明 Linux内核 中采 用了一种同时适用于32位和64位系统的内 存分页模型,对于32位系统来说,两级页表足够用了,而在x86_64系 统中,用到了四级页表,如图2-1所示.四级页表分别为 ...
- Linux内核中的内存管理(图例解析)
一 ,内核管理内存的方式 (1)内核把物理页作为内存管理的基本单位,内存管理单元通常以页为单位进行处理,所以,从虚拟内存角度来看,页就是最小单位. 大多数32位系统支持4kb的页,64位系统支持8kb ...
- Linux内核中的内存屏障(转)
转自:http://www.linuxidc.com/Linux/2011-10/44623.htm 前言 之前读了关于顺序一致性和缓存一致性讨论的文章,感觉豁然开朗.对linux内核中出现的种种同步 ...
- KSM(Kernel Samepage Merging) 剖析:Linux 内核中的内存去耦合
简介:作为一个系统管理程序(hypervisor),Linux® 有几个创新,2.6.32 内核中一个有趣的变化是 KSM(Kernel Samepage Merging) 允许这个系统管理程序通过 ...
- Linux内核中max()宏的奥妙何在?(二)——大神Linus对这个宏怎么看?
最新max()宏 上回,我们在<Linux内核中max()宏的奥妙何在?(一)>一文中说到,在3.18.34版Linux内核源码中的max()宏,采用了GCC的扩展特性,可以避免一些错误. ...
- linux内核中的文件描述符(四)--fd的分配--get_unused_fd
linux内核中的文件描述符(四)--fd的分配--get_unused_fd Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123( ...
最新文章
- 聊一聊多源最短路径问题(只有5行代码哦)
- 一个c加一个g是什么牌子_一个G的流量60块钱,为什么会这么贵?
- 32位数据源中没有mysql_如何在.NET中连接到MySQL数据库
- 关于table和td的边框设置
- 由浅到深理解ROS(5.1)- roslaunch 学习
- LVIS挑战赛冠军总结 | 视觉任务中长尾分布问题研究进展与挑战
- Android开发笔记(五十七)录像录音与播放
- [Flex] flex的安全沙箱,你保障了安全的同时也害苦了多少我这样的人那
- 直击面试,聊聊 GC 机制
- ireport中band指什么_金庸武侠经典书剑恩仇录中,“书剑”指的究竟是什么呢?...
- 51单片机学习笔记8 -- OLED显示(SPI)
- 用计算机按45乘5CE再按,2015年4月全国自学考试计算机应用基础真题
- 标书怎么做?标书制作教程附标书制作思维导图
- ML之lightgbm.sklearn:LGBMClassifier函数的简介、具体案例、调参技巧之详细攻略
- 电商风控赛事亚军方案分享!
- D19-Acwing-实现DP第三节相关代码课程完结撒花~
- 中国移动物联网公司未来的发展靠什么?
- python opencv 读取视频保存视频片段和图片
- jQuery源码分析之实例find和filter方法的区别七问
- 精美绝伦,世界无双的微积分教材精品
热门文章
- 踩坑记录--mybatisplus模糊查询中文时 有数据但 like查不到
- spring注解 @Scheduled(cron = 0 0 1 * * *)的使用来实现定时的执行任务
- CMD窗口的cd命令
- Map 的Properties集合存储IO流对象
- (JAVA)红黑树之自然顺序排序和自定义排序方式
- 计算机成绩表及格率怎么算,卫生资格人机对话如何考试如何评分?成绩如何核算?...
- 李春雷 | 夜宿棚花村
- python 运算及注释
- cookie和session 以及Django中应用
- 基于Enterprise Library的Winform开发框架实现支持国产达梦数据库的扩展操作