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, 分配的内存越大, 失败的可能性越大; 系统启动后分配内存的时间越早(此时空闲内存越多, 分部也越规律), 成功的可能性越大.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434548.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sql server 2008学习3 表组织和索引组织

表组织 表包含在一个或多个分区中,每个分区在一个堆或一个聚集索引结构包含数据行。堆页或聚集索引页在一个或多个分配单元中进行管理,具体的分配单元数取决于数据行中的列类型。 聚集表、堆和索引 SQL Server 表使用下列两种方法之一来组织其分区中的数…

BootLoader与Linux内核的参数传递

在嵌入式系统中,BootLoader 是用来初始化硬件,加载内核,传递参数。因为嵌入式系统的硬件环境各不相同,所以嵌入式系统的BootLoader 也各不相同,其中比较通用的是U-Boot,它支持不同的体系结构,如…

怎么跟踪php代码,第九节 PHP 跟踪调试代码 XDebug

>[success] # PHP 跟踪调试代码 XDebug- [下载XDebug扩展](https://xdebug.org/download.php)- 下载对应PHP版本的Xdebug![](https://box.kancloud.cn/c17f1f1e965522c2fe1411e1759e4447_870x524.png)- 线程安全(TS)和非线程安全(NTS)![](https://box.kancloud.cn/24efc18d4…

oracle经纬度换算成xy坐标,经纬度换算成xy坐标(经纬度转换xy坐标算法)

经纬度怎么转换成平面xy坐标?这里面的经纬度转换成xy坐标是多少?求解你把角度的单位设成度分秒制输入不久可以了。具体输入units命令,对话框中会有一个角度的单位制选择,包括度分秒制。例如绘制一条与当前点距离为100,…

Linux内核参数传递Tag

在2.4(具体哪个版本记不清了)以后的Linux内核中引入了一种新的向内核传递参数的方法tag标记。内核参数通过一个静态的tag链表在启动的时候传递到内核。每个tag的结构为 ----------- tag_header ----------- tag_xxx ----------- 其中tag_header为tag头&a…

ns学习资料

(一). NS常用基本网站   1. Maillist个人觉得是寻求问题答案最好的地方。   http://mailman.isi.edu/pipermail/ns-users/   2. 柯老师的网站,包含很多非常实用资源:安装,trace文件分析,源代码分析&a…

Oracle备份standby,Oracle 11g 利用泠备份恢复standby库

Oracle 11g 利用泠备份恢复standby库1 开始在备库上进行泠备份先查好控制文件、redo、undo文件、数据文件的路径1.1 先关闭主库的归档日志传输SQL> ALTER system SETlog_archive_dest_state_2 DEFER;System altered.SQL>1.2 先关闭standby库SQL> shutdown immediate;D…

Linux内核参数的介绍

sysctl -a 可以列出当前所有的Linux内核参数。 /proc/sys/目录下的东西,对应着sysctl -a列出来的。 man 5 proc syscall 在 /arch/i386/kernel/entry.S里面列出来,这个看起来可能更方便

matlab单位阶跃响应与单位脉冲响应,python 已知响应函数求单位阶跃响应或脉冲响应...

最近学习自动控制原理,关于控制系统的一些,老师用布置了一些作业说要用matlab画,我试试python首先介绍一下所使用的库:control matplotlib sympy1.control库:用来计算脉冲响应与阶跃响应Paste_Image.png2.sympy&#x…

SQL SERVER 的SQL语句优化方式小结

SQL SERVER 的SQL语句优化方式小结详细出处参考:http://www.jb51.net/article/19547.htm 1、SQL SERVER 2005的性能工具中有SQL Server Profiler和数据库引擎优化顾问,极好的东东,必须熟练使用。 2、查询SQL语句时打开“显示估计的执行计划”…

u-boot向linux内核传递启动参数

U-BOOT 在启动内核时,会向内核传递一些参数.而这些参数是通过 structtag来传递的。 U-boot 把要传递给 kernel 的东西保存在 struct tag数据结构中,启动 kernel 时,把这个结构体的物理地址传给 kernel;Linux kernel通过这个地址分析出u-boot传…

$_server['php_self'] 漏洞,Discuz! $_SERVER['PHP_SELF'] XSS Vulnerability

在common.inc.php文件的69行:$PHP_SELF $_SERVER[PHP_SELF] ? $_SERVER[PHP_SELF] : $_SERVER[SCRIPT_NAME];$SCRIPT_FILENAME str_replace(\\\\, /, (isset($_SERVER[PATH_TRANSLATED]) ? $_SERVER[PATH_TRANSLATED] : $_SERVER[SCRIPT_FILENAME]));$boardurl …

【前端破解系列之一】一分钟教你破解下载虾米音乐

虾米音乐网站上有很多高品质的音乐和精心组织的精选集,但普通用户只能试听,不能下载,下载的话需要使用“米”,这个“米”除了极少数的新手任务可以获得之外,基本上都要靠付费来购买,很多人没有网银或者没有…

网络编程常用接口的内核实现----sys_listen()

listen()函数仅在TCP服务器端调用,它做两个事情:将套接字转换到LISTEN状态和设置套接上的最大连接队列。listen()对应的内核实现为sys_listen(),下面开始对其实现作具体的分析。 一、sys_listen()函数 sys_listen()的源码实现及分析如下所示…

linux查看启动配置文件内容,Linux开机启动项的查看和设置方法总结

一、查看开机自启项1.Centos7自启项查看方式从Centos6的chkconfig改为:systemctl list-unit-files2.用grep过滤查看,比如:查看启动项:systemctl list-unit-files | grep enable查看sshd服务自启动情况:systemctl list-…

sql SET DATEFORMAT对日期处理的影响

--1./*--说明SET DATEFORMAT设置对使用CONVERT把字符型日期转换为日期的处理也具有影响但不影响明确指定了style的CONVERT处理。--*/--示例 ,在下面的示例中,第一个CONVERT转换未指定style,转换的结果受SET DATAFORMAT的影响,第二…

linux怎么设置tomcat自动启动,linux添加tomcat服务并设置开机启动

一,脚本文件,编辑好后放在/etc/rc.d/init.d/下面#!/bin/sh#chkconfig: 2345 10 90# description: Starts and Stops the Tomcat daemon.#by jj###############################################Startup script for Tomcat on Linux#filename tomcat.sh#M…

Linux操作系统内核启动参数详细解析

Linux内核在启动的时候,能接收某些命令行选项或启动时参数。当内核不能识别某些硬件进而不能设置硬件参数或者为了避免内核更改某些参数的值,可以通过这种方式手动将这些参数传递给内核。 如果不使用启动管理器,比如直接从BIOS或者把内核文…

XP Embedded:不同的用户使用不同的外壳程序

摘要: 能够使应用程序成为外壳程序是 Windows XP Embedded 的关键功能之一。设备可以在自定义外壳程序而不是 Explorer 外壳程序中启动,这提供了两个好处。第一个好处是系统能够更快地启动。Explorer 外壳程序需要花费大量的时间来加载所有支持库和文件…

linux系统中 库分为静态库和,Linux系统中“动态库”和“静态库”那点事儿-【经典好文】...

今天我们主要来说说Linux系统下基于动态库(.so)和静态(.a)的程序那些猫腻。在这之前,我们需要了解一下源代码到可执行程序之间到底发生了什么神奇而美妙的事情。在linux操作系统中,普遍使用ELF格式作为可执行程序或者程序生成过程中的中间格式。ELF(Exec…