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

admin3年前云主机55

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

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

相关文章

ZoroCloud优惠码

ZoroCloud优惠码随着现代化科技的不断发展,云计算最终成为了未来的主流,ZoroCloud以其出色的技术和服务成为了云计算领域中的佼佼者。为了帮助更多的用户享受到高效的云计算服务,ZoroClo...

日本服务器的优势:为你的app服务器提供高速稳定的托管环境

正文:一、网络速度优势日本位于亚洲中心地带,极具地理重要性。而在科技和通信方面,日本一直保持着领先的地位。这也使得日本的网络速度迅速发展,给亚洲和世界其他地方的用户提供了便利。根据网速测试数据显示,日...

shopex虚拟主机

Shopex虚拟主机介绍Shopex虚拟主机是一种为建站提供支持的服务器空间,特别为使用Shopex系统建站的用户提供优质的虚拟主机服务。Shopex虚拟主机为用户提供了一个高效、便捷的建站环境,使用...

云主机的优缺点是什么

云主机的优缺点是什么云主机作为一种虚拟化技术,在互联网行业得到了广泛应用。它是基于云计算技术的一种服务模式,可以为用户提供弹性、高效、可靠的云计算服务。那么,云主机有哪些优缺点呢?接下来我们将从性能、...

ssh远程登录工具

SSH远程登录工具什么是SSH远程登录工具SSH(Secure Shell)是一种加密的网络协议,常常用于远程登录其他计算机或设备,将数据以加密方式传送,使得安全性大大提高。SSH远程登录工具则是通过...

云主机管理面板

什么是云主机管理面板?云主机管理面板是为了方便用户对云服务器进行管理而提供的一种图形化界面。通过云主机管理面板,可以实现对云服务器的操作,如开关机、配置网络、安全设置等,而且比命令行操作更简单易懂。云...