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

admin3年前云主机21

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

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

相关文章

亚马逊云服务器

什么是亚马逊云服务器?亚马逊云服务器是Amazon Web Services (AWS)推出的一项云计算服务,提供了可扩展、高可用性的计算能力。客户可以在云上租用虚拟服务器,存储空间和数据库来构建自己...

云端经济:腾讯云服务器一年多少钱?

云端经济正在逐渐成为世界经济的重要组成部分。近年来,随着云计算技术的不断发展,云计算服务已经成为了企业信息化建设的主要选择之一。其中,云服务器作为云计算服务的重要组成部分,得到了很多企业的青睐。本文以...

lisahost怎么样

评价 LisaHost 的各项服务LisaHost 的主要服务LisaHost 是国内的一家云服务商,主营业务包括:云服务器、虚拟主机、SSL证书、Office 365等。他们的官网界面美观大方,操作...

1核1g服务器怎么样

1核1g服务器怎么样什么是1核1g服务器1核1g是指服务器的CPU核心数为1,内存为1GB。相对于高配服务器,1核1g服务器的性能较低,但价格更为实惠,适合用于个人博客、小型网站等。1核1g服务器的优...

linux查看ssh服务

如何查看Linux上的SSH服务什么是SSH服务?SSH(Secure Shell)是一种安全的远程登陆协议。它可以保证数据传输过程中不被窃听、篡改以及伪造。它基于公钥加密原理,使用公钥加密技术在客户...

香港金融数据服务器优势分析

一、地理位置优势1、香港地处全球最活跃的经济和金融区域,成为亚太地区最重要和最具有影响力的国际金融中心之一,具有便利的物流和信息通讯发展环境。2、香港地缘政治环境稳定,拥有与国际接轨的法律、税收和监管...