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

admin3年前云主机112

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

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

相关文章

ip route

IP Route什么是 IP Route?IP Route 是网络中通过路由器指定的 IP 包传输路径。它是在网络协议中定义的一组规则,用于确定路由器在将 IP 数据包从一个网络发送到另一个网络时的路...

真正免费永久VPS

什么是真正免费永久VPS许多网站提供免费VPS试用,但它们通常只持续一段时间,之后您将被要求付费。因此,如果您正在寻找真正免费永久VPS,则需要了解什么是真正意义上的免费永久VPS。一个真正的免费永久...

动漫行业选择香港服务器的优势有哪些

动漫行业为什么选择香港服务器香港作为亚洲的经济中心,素有“东方之珠”之称,具有独特的地理位置和优越的网络环境,因此成为动漫行业的热门服务器选择之一。那么,有哪些优势让动漫行业选择香港服务器呢?优越的地...

DNS缓存原理解析:如何优化网站速度与访问体验

DNS(Domain Name System)是互联网的核心基础设施之一,是将人类可读的网址转换为计算机可读的IP地址的过程。DNS缓存原理是通过将域名查询结果存储在本地的缓存中,可以加快网站的访问速...

如何选择优质的香港服务器?关注这些因素!

香港作为亚洲的金融中心,其网络基础设施在亚太地区也是相当强大的。这也使得香港的服务器市场越来越受到关注。如何选择优质的香港服务器是每个企业和个人用户都需要考虑的问题。一、服务器性能服务器性能是选择服务...

租用泉州大带宽服务器该如何选择?租用泉州大带宽服务器地址多少?

近年来大带宽服务器频频出现在我们的视野当中,使用的站长也有很多。那么究其主要原因是什么?租用泉州大带宽服务器该如何选择?1.可以提高网站访问速度正规的网站对用户体验度都是非常有讲究的,这就要求它必须有...