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

admin3年前云主机29

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

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

相关文章

microsoft2019怎么激活

Microsoft 2019如何激活Microsoft Office 2019是许多人常用的办公软件。然而,有些人遇到了激活问题,这很常见。在这篇文章中,我将向大家介绍如何激活Microsoft Of...

如何选择印度服务器的机房位置?

如何选择印度服务器的机房位置?选择印度服务器机房位置时,以下是一些需要考虑的因素:用户分布:如果您的网站主要用户在印度,那么选择位于印度的机房位置将使得网站响应速度更快。另外,如果您的用户在亚太地区,...

在Linux系统上关闭rpc.statd服务的方法(linux中关闭系统的命令)

为了让linux主机少一些隐患,我们要尽可能把一些不需要的服务取消或者删掉。我们可以先来看看目前有哪些端口是开着的复制代码代码如下:[root@localhost linsc]# nmap 127.0...

国外免费cdn服务商怎么选择

国外免费CDN服务商怎么选择如果你的网站需要加速访问速度,那么使用CDN(内容分发网络)是一个不错的选择。CDN可以将你的网站静态资源(如图片、CSS、JS等)分发到全球的各个节点,让访客可以更快、更...

新加坡虚拟主机加速

什么是新加坡虚拟主机?虚拟主机是利用服务器分区技术将一台服务器分割成多个虚拟主机,每个虚拟主机拥有独立的资源,用户可在虚拟主机上搭建自己的网站。而新加坡虚拟主机则是指托管在新加坡服务器的虚拟主机,优点...

日本云服务器租用:选择前需考虑的问题

随着云计算技术的不断发展,日本云服务器租用受到越来越多公司的关注。作为一项服务,日本云服务器租用在提供便利的同时也存在一些问题需要考虑。本文从安全性、稳定性、价格、技术支持等四个方面探讨日本云服务器租...