首页 > 系统相关 >linux memblock 介绍

linux memblock 介绍

时间:2023-06-24 22:33:13浏览次数:125  
标签:初始化 memblock memory 介绍 --- 内存 分配器 linux

memblock 作用

内核初始化阶段是用引导内存分配器 memblock 进行管理,因为内核里面有很多内存结构体,不可能在静态编译阶段就静态初始化所有的这些内存结构体。另外,在系统启动过程中,系统启动后的物理内存分配器本身也需要初始化,如伙伴分配器,那么伙伴分配器如何获取内存来初始化自己呢 ?为了达到这个目标,我们先实现一个满足要求的但是可能效率不高的笨家伙,引导内存分配器。用它来负责系统初始化初期的内存管理, 最重要的, 用它来初始化我们内存的数据结构, 直到我们真正的内存管理器被初始化完成并能投入使用, 我们将旧的内存管理器丢掉。

memblock 获取物理内存信息

设备启动时,引导程序把设备树二进制文件从存储设备读到内存中,引导内核的时候把设备树二进制文件的起始地址传给内核,内核解析设备树二进制文件后得到硬件信息。

    memory@80000000 {
        device_type = "memory";
        reg = <0x80000000 0x20000000>;
    };

    reserved-memory {
        #address-cells = <1>;
        #size-cells = <1>;
        ranges;

        linux,cma {
            compatible = "shared-dma-pool";
            reusable;
            size = <0xa000000>;
            linux,cma-default;
        };
    };

 

上面设备树描述了一个以 0x80000000 为首地址,长度为 0x20000000 的内存,会被添加到 memblock 中,调用关系如下:

start_kernel() ---> setup_arch() ---> setup_machine_fdt() ---> early_init_dt_scan_nodes() ---> early_init_dt_scan_memory() ---> early_init_dt_add_memory_arch() ---> memblock_add()

 

 

 

标签:初始化,memblock,memory,介绍,---,内存,分配器,linux
From: https://www.cnblogs.com/god-of-death/p/17501810.html

相关文章

  • spring aop里的三种不同类型的自动代理介绍
    springaop里的三种不同类型的自动代理介绍MetadataautoproxyingBeanNameAutoProxyCreatorDefaultAdvisorAutoProxyCreator Metadataautoproxying介绍在SpringAOP中,Metadataautoproxying(元数据自动代理)是一种基于元数据配置的自动代理创建方式,它是我们最常用的一种自......
  • 云掌柜多商户点餐小程序功能介绍
    详情内容:云掌柜多商户点餐小程序源码,基于uniapp前端+laravel框架开发,全部源码无加密,可二次开发。类似肯德基,麦当劳,喜茶等小程序多店铺模式,支持子商户模式,云掌柜点餐小程序是一款功能强大、灵活多样的点餐平台、适用于各类餐饮行业,帮助商家提升服务质量和效率,增加收入,支持私有化......
  • linux 系统清理 systemctl 日志
    背景生产环境日志文件太多导致磁盘空间不足,临时删除一些systemctl日志解决步骤首先,停止systemd-journald服务:sudosystemctlstopsystemd-journald清理日志文件:sudojournalctl--vacuum-size=100M上述命令将清理超过100MB大小的日志文件。你可以根据需要调整--vacuum-size参数......
  • mysqldump 介绍
    使用mysqldump命令来备份MySQL数据库。mysqldump命令是MySQL自带的备份工具,可以将MySQL数据库备份成SQL文件。mysqldump是MySQL用于转存储数据库的实用程序。它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATETABLE、INSERT等。mysqldump的运行机制......
  • 跨域攻击的方法介绍
    跨域攻击的方法介绍目录跨域攻击的方法介绍一、内网中的域林二、跨域攻击方法三、获取域信息四、利用域信任密钥跨域五、利用krbtgt哈希值跨域一、内网中的域林很多大型企业都拥有自己的内网,一般通过域林进行共享资源。根据不同职能区分的部门,从逻辑上以主域和子域进行区分,以方......
  • Nodejs介绍与安装
    Nodejs介绍与安装介绍Nodejs是一个能够在服务器端运行JavaScript的开放源代码、跨平台JavaScript运行环境Nodejs采用Google开发的V8引擎运行js代码,使用事件驱动、非阻塞和异步I/O模型等技术来提高性能,可优化应用程序的传输量和规模Nodejs大部分基本模块都用JavaScript编写。......
  • 在Linux系统下XAMPP安装与配置(可离线安装)
    ......
  • 【linux命令】“最强大的编辑器”vim用法简介(基础篇)
    vim编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器。它主要分为命令令行模式、插入模式和底行模式这三种,下面主要介绍一下这三种模式最简单常用的用法。一.命令行模式1.移动光标左移:h光标右移:l光标上移:k光标下移:j光标向右移动一个单词:w(联......
  • linux系统查询服务器ip地址的命令
    linux系统查询服务器ip地址的命令参考文章3种方法来在Linux系统中查看服务器IP地址在Linux系统中,可以使用以下命令来查询服务器的IP地址:ifconfig命令:在终端输入ifconfig命令,它会显示当前系统中所有网络接口的配置信息,包括服务器的IP地址。ip命令:在终端输入ipaddr命令,它会列......
  • Servlet方法介绍
     publicvoidinit(ServletConfigconfig)throwsServletException{this.config=config;System.out.println("init...");}publicServletConfiggetServletConfig(){returnconfig;} ......