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

admin3年前云主机43

在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)提高科研效率;2)推动数据科学的发展;3)促进人工智能的发展;4)推动智能制造的发展。这些方面都...

山东短信群发全攻略:快速精准发出信息,轻松连接更多客户和合作伙伴

一、短信群发的基本原理短信群发主要是利用短信平台向指定的人群群发信息,大量的信息发送可以通过短信平台实现批量发送,短信内容形式为文字、图片、视频等。在短信平台操作完成后,系统将通过电信运营商网络将信息...

CDN加速,改变网速:探究CDN技术在网站加速中的作用

一、什么是CDN1、CDN的概念CDN(内容分发网络),即是一种分布式的互联网加速技术,它的基本思想是建设一组以高速缓存和调度为基础,发挥弹性、智能和安全等特点的分布式网络。CDN技术的目的是将源站的...

「Bootstrap CDN让前端开发变得更高效?」

一、简介Bootstrap CDN是一个流行的前端框架,有助于快速构建Web应用程序。Bootstrap具有可扩展的组件和类,可以轻松地实现界面的快速设计和响应式布局。Bootstrap CDN为用户...

IDEA中进行Docker项目部署的实现步骤

现在大部分项目已经开始部署在Docker上面了,可是部署环节还是有点麻烦,所以本文想讲解一下如何使用IDEA一键部署。Docker配置修改配置文件打开Docker的配置文件:vim /usr/lib/...

resellerclub虚拟主机(ResellerClub虚拟主机更换ip)

文章目录:1、resellerclub云虚拟主机怎么样?有没人用过?2、虚拟主机和主机,有什么不同?3、哪家免备案虚拟主机好,而且便宜点的?4、有一台VPS可以做什么?resellerclub云虚拟主...