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

admin3年前云主机19

在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内核使用)》来自互联网同行内容,若有侵权,请联系我们删除!

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

相关文章

俄罗斯主机商

俄罗斯主机商的优缺点俄罗斯主机商因其价格便宜和技术支持能力强而备受网站管理员的青睐。但是,也存在着一些缺点需要注意。优点价格优势是俄罗斯主机商最大的优势之一。相比于欧美和亚洲国家的主机商,俄罗斯的主机...

堡垒机价格大揭秘,你知道吗?

堡垒机作为企业网络安全的重要组成部分,一直备受关注。然而,在使用堡垒机的过程中,价格是一个十分重要的考虑因素。本文将从四个方面介绍堡垒机价格的大揭秘。一、堡垒机价格波动的因素1、市场因素:企业对网络安...

使用Docker搭建MySQL主从数据库的方法步骤(使用docker搭建分布式集群)

内容介绍1. 准备主服务器2. 准备从服务器3. 启动主从同步4. 实现主从同步5. 停止和重置很多人对主从数据库有一个误区,把多个MySQL搭建在同一个服务器上,性能提升是不是很有限?这个理念是错误...

“高效跨境电商:租用香港服务器的优势”

本篇文章通过介绍“高效跨境电商:租用香港服务器的优势”,探讨香港服务器的优点以及适用范围,以此引起读者的兴趣。文章分为四个方面进行详尽阐述:稳定的网络环境、法律和政策的优势、便利的人才和市场资源,以及...

udp服务器租赁

UDP服务器租赁是什么UDP服务器租赁是一种云计算服务,可以为用户提供高性能和高可用性的UDP协议服务。UDP是一种面向无连接的协议,常用于音视频传输、游戏通讯等场景。在这些场景中,实时性非常重要,因...

美国服务器租赁安全吗?

美国服务器租赁安全吗?美国服务器租赁可以是相对安全的,但也需要注意以下几点:选择可靠的服务商:在选择服务商时,请确保选一个已被证明为可靠和有声誉的企业。了解他们的安全措施、技术支持、备份策略等信息。增...