Linux物理内存管理

news/2024/11/28 23:41:10/文章来源:https://www.cnblogs.com/fatetoday/p/18575398

1 物理内存初始化——引导分配器memblock

  Linux内核启动时,先要初始化物理内存,这个阶段的作用主要是确定物理内存大小,哪些是可用的?哪些是预留的?完成这一阶段工作的是memblock引导分配器。

  内核启动时初始化物理内存的处理函数调用路径大概是(基于Linux 5.10.1源码查看):

  start_kernel(void)

    -->setup_arch(&command_line)

      -->setup_machine_fdt

        -->early_init_dt_scan_nodes

          -->of_scan_flat_dt

            -->early_init_dt_scan_memory

  上文中early_init_dt_scan_memory会读取dts中的memory节点,然后调用early_init_dt_add_memory_arch-->memblock_add-->memblock_add_range在memblock数据结构中添加物理内存。这里我们仔细看下memblock的数据结构(memblock.h文件中):

  从以上三个结构体我们不难看出,memblock结构体保护成员struct memblock_type memory成员和struct memblock_type reserved成员,memory就是可以的内存区域,而reserved就是预留的内存区域。struct memblock_type中又有指针指向memblock_region,memblock_region则记录了每个内存分区。

   我们接下来仔细看下代码memblock_add和memblock_reserve(在mm/memblock.c中),

 

 

1.1 memblcok中memory和reserved的差别

  

先休息,明天继续~

 

参考链接:Linux内存管理 (1)物理内存初始化 - ArnoldLu - 博客园 (cnblogs.com)

  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/843150.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Threejs入门-灯光

在 Three.js 中,灯光是非常重要的元素之一,它能够模拟现实世界中的光照效果,帮助我们打造更加真实的三维场景。灯光的种类和配置方式可以影响整个场景的视觉效果,在不同的应用中,灯光的使用非常关键。 灯光概述 Three.js 提供了几种常见的光源类型:环境光(Ambient Light…

《Django 5 By Example》阅读笔记:p383-p387

《Django 5 By Example》学习第 14 天,p383-p387 总结,总计 5 页。 一、技术总结 1. asynchronous task(异步任务) 对于异步任务,书中使用的是 celery 和 RabbitMQ,这也是平时工作中的主流用法。 (1) celery Python 使用的 celery 包的名字也是 celery。 2. RabbitMQ (1) 拉…

思维模型:六顶思考帽,从不同角度思考问题,提升思维认知

思维模型:六顶思考帽思维模型,从不同角度思考分析问题,提升思维认知介绍 六顶思考帽(Six Thinking hats) ,由爱德华德博诺博士提出的一种思维认知模型工具。 它是通过不同颜色的帽子来代表六种不同的思维方式,帮助人们从多个角度全面分析和解决问题,提升认知。这六种颜…

12.SpringCloudAlibabaSentinel实现熔断和限流

1.Sentinel 1.1 官网 sentinel官网,类似Spring Cloud Circuit Breaker。 1.2 是什么 面向分布式、多语言异构化服务架构的流量治理组件。 1.3 下载地址 https://github.com/alibaba/Sentinel/releases 1.4 能干吗 Sentinel以流量为切入点,从流量控制、流量路由、熔断降级、系…

视觉多模态理解模型基础

1. 视觉多模态简介 视觉多模态一般涵盖2个要点:视觉表征 以及 视觉与自然语言的对齐(Visual Language Alignment)或融合。1.1. 视觉表征 视觉表征是指:将图像信息转化为深度学习模型可以处理的特征向量或向量序列的过程。具体来说,它包含以下2点:合理建模视觉输入特征:这…

Padavan 使用VNT

openwrt ppoe拨号有问题,实在忍受不了,只能换回稳定的Padavan下载二进制vnt放至/etc/storage添加自启脚本/etc/storage/vnt-cli -s tcp://x.x.x.x:29872 -k passwd --use-channel relay -n R3P -o 192.168.123.0/24 -i 10.1.50.0/24,10.1.1.4 -i 10.2.110.0/24,10.1.1.223 …

【架构】统一认证中心的架构设计与实现(一)

一、背景二、认证授权概念2.1 认证2.2 授权三、一些名词四、常见的认证方案4.1 JWT4.2 OAuth2五、SSO协议5.1 OpenID Connect5.2 SAML 2.05.3 CAS六、RBAC一、背景 一般在一个公司内部可能有多个系统,比如OA,财务系统,CMS,ERP,营销系统,客服中心,项目管理系统,代码管理…

Listener内存马

概述 Listener是Java Web App中的一种事件监听机制,用于监听Web应用程序中产生的事件,例如,在ServletContext初始化完成后,会触发contextInitialized事件,实现了ServletContextListener接口的Listener就可以接收到事件通知,可以在内部做一些初始化工作,如加载配置文件,…

一种小资源情况下RDS数据实时同步StarRocks方案

使用一台4C8 G服务器轻松实现2个MySQL实例中通过负责分库分表规则之后的5000多张表的数据实时同步到StarRocks一、背景 目前需要将阿里云RDS数据库的数据同步到自建的StarRocks集群。之前使用DolphinScheduler通过定时调度Datax任务,将数据同步到StarRocks集群中,但是随着业务…

Elasticsearch常用查询及Kibana使用

Elasticsearch常用查询及Kibana使用 背景 搭建好Nginx => Filebeat => Logstash => Elasticsearch的日志获取通道后,通过jmeter配置产生10000条请求查看jmeter配置查看聚合报告Devtools工具进行查询查询reponseTime 90%,95%,99%分割线GET nginx-2024.11.28/_search…

Logstash安装及传输日志

Logstash安装及传输日志 Logstash安装按照官方文档安装启动logstash 方法1启动命令systemctl start logstash方法2 查看logstash启动配置先执行命令查看启动文件位置,可看出启动文件位置为/etc/systemd/system/logstash.servicesystemctl status logstash查看/etc/systemd/sys…

FileBeat安装及抽取Nginx日志

FileBeat安装及抽取Nginx日志 FileBeat安装按照官网指导安装,其他系统或版本可参考下载页面。此次测试FileBeat与nginx部署在同一台机器上。curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.17.25-linux-x86_64.tar.gz tar xzvf filebeat-7.17.…