Linux内核环境下如何申请大块内存?

  发布时间:2017-03-28 17:11:27   作者:佚名   我要评论
最近一些朋友反馈说不知道Linux内核环境下如何申请大块内存?今天小编将为大家带来的是Linux内核环境下申请大块内存的方法!有需要的朋友一起去看看吧
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

在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的GRUB启动背景的方法

    一些朋友问小编如何修改Linux的GRUB启动背景?今天小编将为大家带来的是修改Linux的GRUB启动背景的方法!希望对大家会有帮助!有需要的朋友一起去看看吧
    2017-03-29
  • 在Mac外置硬盘上如何安装Linux?

    最近有些朋友问小编在Mac外置硬盘上如何安装Linux?今天小编将为大家带来的是在Mac外置硬盘上安装Linux的方法!希望能够帮助到大家!有需要的朋友一起去看看吧
    2017-03-29
  • Linux内核与根文件系统的关系详解

    今天小编为大家带来的是Linux内核与根文件系统的关系详解!希望对大家会有帮助!有需要的朋友一起去看看吧
    2017-03-28
  • VMWare虚拟机下Linux无法全屏的解决方法

    VMWare是目前业界最为流行的一款虚拟机工具。那么VMWare虚拟机下Linux无法全屏怎么办?今天小编将为大家分享的是VMWare虚拟机下Linux无法全屏的解决方法!有需要的朋友一起
    2017-03-27
  • Linux为何如此深得人心呢?10项原因精选

    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。那么Linux为何如此深得人心呢?下面为大家精选了1
    2017-03-27
  • Linux统计行数方法及效率测试详解

    今天小编为大家带来的是Linux统计行数方法及效率测试详解!希望对大家会有帮助!有需要的朋友一起去看看吧
    2017-03-24
  • linux如何修改分区id?修改linux分区类型的方法

    linux如何修改分区id 怎么修改linux分区类型?今天小编就为大家带来的是修改linux分区类型的方法!希望对大家会有帮助!有需要的朋友一起去看看吧
    2017-03-24
  • Linux系统Centos没有网卡eth0配置文件的解决方法

    今天小编要为大家带来的是Linux系统Centos没有网卡eth0配置文件的解决方法!希望对大家会有帮助!有需要的朋友一起去看看吧
    2017-03-24
  • Linux怎么使用命令查看文件指定行数的内容?

    Linux怎么使用命令查看文件指定行数的内容?Linux系统中想要查看制定行数的内容,该怎么查看呢?下面我们就来介绍三个命令的使用方法,需要的朋友可以参考下
    2017-03-24
  • 适合Linux新手的发行版本介绍

    这篇文章主要介绍了适合Linux新手的版本,对于Linux新手来说,这篇文章可以帮助到大家,需要的朋友可以参考下
    2015-06-25

最新评论

?


http://www.vxiaotou.com