• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • bios
  • 系统安装
  • 系统进程
  • Windows
  • LINUX
  • RedHat/Centos
  • Ubuntu/Debian
  • Fedora
  • Solaris
  • 麒麟系统
  • 红旗Linux
  • 苹果MAC
  • 注册表
  • 其它系统
您的位置:首页 > 操作系统 >LINUX > Linux内核环境下如何申请大块内存?

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

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-05-12

佚名 通过本文向大家介绍了linux内核内存管理,深入理解linux内核,linux内核完全注释,linux内核版本,查看linux内核版本等相关知识,希望对您有所帮助,也希望大家多多支持linkedu.com

在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);
</div>

可见其应用还是比较简单的,不过利弊总是共生的,它不可避免也有其自身的限制:

1.内存申请代码只能连接进内核,不能在模块中使用。

2.被申请的内存不会被页分配器和slab分配器所使用和统计,也就是说它处于系统的可见内存之外,即使在将来的某个地方你释放了它。

3.一般用户只会申请一大块内存,如果需要在其上实现复杂的内存管理则需要自己实现。

在不允许内存分配失败的场合,通过启动内存预留内存空间将是我们唯一的选择。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Linux内核环境下如何申请大块内存?
  • 内核内存分配常用函数使用

相关文章

  • 2017-05-12Linux如何过滤空文件?Linux过滤空文件的命令总结
  • 2017-05-12Linux系统中使用dd命令检测硬盘性能的方法
  • 2017-05-12微软发布Linux Integration Services 4.0 更新下载
  • 2017-05-12Linux中使用mdadm命令来操作RAID的基本教程
  • 2017-05-12Linux Kernel 4.10第5个候选版本RTM版发布 2月12日发布正式版
  • 2017-05-12Linux系统下iso文件的制作和解压以及加载
  • 2017-05-12Linux下面使用命令如何运行.sh文件的两种解决办法
  • 2017-05-12快速浏览Linux下基本的用户和用户组管理命令
  • 2017-05-12发现Linux中IP地址冲突的方法
  • 2017-05-12在Linux下通过WEB认证方式上网

文章分类

  • bios
  • 系统安装
  • 系统进程
  • Windows
  • LINUX
  • RedHat/Centos
  • Ubuntu/Debian
  • Fedora
  • Solaris
  • 麒麟系统
  • 红旗Linux
  • 苹果MAC
  • 注册表
  • 其它系统

最近更新的内容

    • xshell远程工具怎么设置?xshell设置为中文的教程
    • Linux下安装vagrant过程出现问题如何解决?
    • Linux shell 比较运算符详解
    • linux命令每天必学(15)之tail 命令
    • Linux中Samba服务器的编译安装以及配置的宏的写法
    • Linux系统Vim编辑器如何安装YouCompleteMe插件?
    • Linux系统中有效用户组和初始用户组有什么作用于区别?
    • Linux系统下pv命令的一些使用技巧小结
    • linux如何开启telnet服务?linux开启telnet服务的方法
    • Linux中df命令查询磁盘信息和fdisk命令分区的用法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有