Linux内核环境下如何申请大块内存?(linux内核使用)

admin3年前云主机56

在Linux内核环境下,申请大块内存的成功率随着系统运行时间的增加而减少,虽然可以通过vmalloc系列调用申请物理不连续但虚拟地址连续的内存,但毕竟其使用效率不高且在32位系统上vmalloc的内存地址空间有限。所以,一般的建议是在系统启动阶段申请大块内存,但是其成功的概率也只是比较高而已,而不是100%。如果程序真的比较在意这个申请的成功与否,只能退用“启动内存”(Boot Memory)。下面就是申请并导出启动内存的一段示例代码:
 

void* x_bootmem = NULL;EXPORT_SYMBOL(x_bootmem);unsigned long x_bootmem_size = 0;EXPORT_SYMBOL(x_bootmem_size);static int __init x_bootmem_setup(char *str){ x_bootmem_size = memparse(str, &str); x_bootmem = alloc_bootmem(x_bootmem_size); printk("Reserved %lu bytes from %p for x\n", x_bootmem_size, x_bootmem); return 1;}__setup("x-bootmem=", x_bootmem_setup);

可见其应用还是比较简单的,不过利弊总是共生的,它不可避免也有其自身的限制:

1.内存申请代码只能连接进内核,不能在模块中使用。

2.被申请的内存不会被页分配器和slab分配器所使用和统计,也就是说它处于系统的可见内存之外,即使在将来的某个地方你释放了它。

3.一般用户只会申请一大块内存,如果需要在其上实现复杂的内存管理则需要自己实现。

在不允许内存分配失败的场合,通过启动内存预留内存空间将是我们唯一的选择。

《Linux内核环境下如何申请大块内存?(linux内核使用)》来自互联网同行内容,若有侵权,请联系我们删除!

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

ptcms采集规则教程

什么是ptcms采集规则?ptcms采集规则是ptcms实现采集功能的核心。采集规则是一组描述如何获取和解析目标网站数据的规则,包括目标地址、采集方式、分页规则、正则表达式、数据处理等信息。采集规则的...

买香港服务器(香港服务器购买)

文章目录:1、如何购买香港云服务器2、香港服务器哪家比较好3、选择香港服务器需要注意什么?4、香港服务器多少钱?5、请问有没有稳定性比较好的香港服务器,如果有,哪家比较好一点呢?6、哪里买香港服务器如...

企业建立官网的好处

企业建立官网的好处在如今的数字化时代,企业所拥有的网络形象至关重要。随着越来越多的用户使用网络查找信息和服务,一家企业建立自己的官网已成为必不可少的一步。那么,建立官网对企业有哪些好处呢?一、提升企业...

个人网站建设流程

个人网站建设流程在如今互联网时代,拥有一份个人网站已经成为许多人的选择,网站可以记录个人的生活、工作、成长经历等,也可以作为展示个人技能和作品的平台。本文将为你介绍个人网站建设的流程。第一步:确定网站...

windows做虚拟主机

Windows做虚拟主机什么是虚拟主机虚拟主机简单来说就是利用一台服务器,为多个用户提供独立的web空间,相当于一台大服务器分成若干个小服务器,每个小服务器又可以把多个虚拟主机分配给不同的用户使用,从...

租用台湾大带宽服务器是选择Linux还是windows好?租用台湾大带宽服务器有哪些?

越来越多台湾大带宽服务器供应商提供的服务器一般都兼容linux和windows系统,两者都各有各的优点,使用起来都很靠谱而且具备普遍的运用平台,所以深受广大客户的青睐。那么,客户在购买台湾大带宽服务器...