Linux内核源码分析 (B.x)Linux物理内存的初始化

news2025/5/26 9:36:03

Linux内核源码分析 (B.x)Linux物理内存的初始化

文章目录

  • Linux内核源码分析 (B.x)Linux物理内存的初始化
  • 一、DDR简介
  • 二、内存节点
  • 三、内存管理区域ZONE
  • 四、 struct zone
  • 五、 struct page
  • 六、mem_map数组
  • 七、伙伴系统简介
  • 八、迁移类型
  • 九、内存初始化
  • 十、总结

一、DDR简介

在这里插入图片描述

  • 详细可见《深入理解计算机系统》(6)存储器层次结构 1.1.4节内存模块

二、内存节点

在这里插入图片描述

  • 内核使用pglist_data来描述一个内存节点

三、内存管理区域ZONE

在这里插入图片描述

  • 为什么要有ZONE?
    为了支持NUMA模型,系统的物理内存被划分为几个节点(node),节点又划分成内存管理区域(zone)。Linux内核对不同区域的内存需要采用不同的管理方式和映射方式。
  • ARM32架构的zone划分为ZONE_NORMALZONE_HIGHMEM,x86架构里还有ZONE_DMA

在这里插入图片描述

四、 struct zone

在这里插入图片描述

  • cache line :高速缓存行

五、 struct page

在这里插入图片描述

六、mem_map数组

在这里插入图片描述

  • 简单来说,mem_map数组存放了struct page数据结构
  • 这里讲到了描述物理页面的数据结构struct page和页帧号pfn之间的转换,具体可以看下面这张图,更多信息可以参考
    在这里插入图片描述

七、伙伴系统简介

在这里插入图片描述

  • 伙伴系统的部分参考《深入理解计算机系统》第9章虚拟内存

八、迁移类型

在这里插入图片描述

九、内存初始化

在这里插入图片描述

  • 与x86等体系结构不同,ARM体系结构中只有Normal ZoneHighMem Zone,注意总计有194560+67584=242144页,为啥不用考虑存放mem_map[]数组的1520页,我猜测那两个数值已经包含在里面了…

在这里插入图片描述

十、总结

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电脑msvcp140.dll丢失问题的三种解决方法分享,快速修复dll问题

在我们的日常生活中,计算机已经成为了我们工作、学习和娱乐的重要工具。然而,在使用计算机的过程中,我们可能会遇到各种问题,其中之一就是 msvcp140.dll 丢失的困扰。本文将详细介绍 msvcp140.dll 丢失的原因、解决方法以及预防措…

可变参数JAVA

public class Main {public static void main(String[] args) {//方法形参的个数是可以变化的//格式:属性类型...名字System.out.println(getSum(1,2,3,4,5,6,7,8));}//通过键值对对象来遍历;public static int getSum(int a,int...args){//可变参数;int…

AirTag是什么?高精度测距定位防丢,UWB厘米级方案应用

随着科技的不断发展,超宽带(UWB)技术作为一种新兴的无线通信技术,逐渐受到人们的关注和追捧。 UWB技术以其传输速率高、抗干扰性强、带宽极宽、功耗低、安全性高、穿透力强、定位精准等优势,在众多领域具有广泛的应用…

输电线路故障数据集(基于simulink仿真批量生成故障数据,单相接地故障、两相接地故障、两相间短路故障、三相接地故障、三相间短路故障和正常)

分别获取单相接地故障、两相接地故障、两相间短路故障、三相接地故障、三相间短路故障和正常状态下的电流(Ia,Ib,Ic)大小和电压(Ua,Ub和Uc)大小。每种故障下获取1300行左右的数据 将故障区分为具体的不同类型(一共五种…

JetBrains设置inline hint的背景色、前景色

如题。修改IDE的hint前景色和背景色。 修改后结果:

为什么DasViewer打开之后一直白屏?如图

答:这种情况可以检查一下电脑的集显驱动。 DasViewer是由大势智慧自主研发的免费的实景三维模型浏览器,采用多细节层次模型逐步自适应加载技术,让用户在极低的电脑配置下,也能流畅的加载较大规模实景三维模型,提供方便快捷的数据浏览操作。#DasViewer##实景三维##三…

跟踪源码技巧+阅读源码工具Sourcetrail

基于Eclipse IDE 1、Quick Type Hierarchy 快速查看类继承体系 ( 快捷键:Ctrl T) 查看类很多人可能都知道,可源码阅读的时候更多用来查看方法体系更重要,可以方便快速的定位到方法的实现类。如: 此时如…

Mendelay-文献管理软件使用教程

Mendelay-文献管理软件 注册账号 注册账号 打开官网,注册个人账号 通过邮箱就可以注册账号啦,这是登录后的页面,并下载Mendeley客户端。 安装好客户端,打开软件首先登录以上注册的账号,则可进入客户端首页。

《安富莱嵌入式周报》第322期:自制10KV电子负载,史上最详细的电池系列资料,创意洞洞板任意互联,开源USB分析仪,英特尔雷电5, QNX功能安全免费课程

周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版: https://www.bilibili.com/video/BV1M8411q7dw/ 《安富莱嵌入式周报》第322期:自制10K…

nvue文件中@click.stop失效

在nvue文件中在子元素使用click.stop失效,父元素的事件触发了 在uniapp开发中nvue文件是跟vue文件是不一样的,就比如click.stop阻止点击事件继续传播就失效了,这时我们需要在子元素事件中添加条件编译,这样就会解决这个问题 // …

图论第三天|130. 被围绕的区域、417. 太平洋大西洋水流问题、827. 最大人工岛

130. 被围绕的区域 文档讲解 :代码随想录 - 130. 被围绕的区域 状态:开始学习。 思路: 步骤一: 深搜或者广搜将地图周边的 ‘O’ 全部改成 ’A’,如图所示: 步骤二: 再遍历地图,将 …

记录一次使用网云穿实现内网穿透操作

记录一次使用网云穿实现内网穿透操作 摘要 这段时间也很少写博客了,一方面工作表较忙,一方面觉得有些东西在百度上都能找到,甚至比我自己记录的详细,有些笔记也就没打, 这次记录笔记主要是觉得这个 网云穿 很好用,分享给大家. 1 什么是内网穿透? 内网穿透也叫内网映射&#xf…

zookeeper最基础教程

文章目录 一、简介1、工作机制2、特点3、数据结构4、应用场景5、选举机制 二、软件安装1、单机版安装2、集群安装3、配置参数解读(zoo.cfg)4、ZK集群启动脚本 三、命令行操作1、语法2、使用3、节点相关4、监听器原理5、节点删除与查看 三、写数据流程 一、简介 1、工作机制 官…

输电线路故障数据集(单相接地故障、两相接地故障、两相间短路故障、三相间短路故障)

1.数据集介绍 将故障区分为具体的不同类型:单相短路故障、两相接地短路故障、两相相间故障、三相相间短路故障。每类有1300行数据左右,这里随意举出每种类别的两个样本进行展示。 GCBAIaIbIcVaVbVc1001-151.2918124-9.67745156385.800162260.400749853…

Hadoop设置固定ip无效的解决办法

今天配置Hadoop的时候,执行vi /etc/sysconfig/network-scripts/ifcfg-ens33修改网络配置文件后,一切正常,但重启后IP改变了,并且在修改以及重启网络连接数次后,IP依旧不按照我在ifcfg-ens33中配置的那样,检…

C++ - map 的 例题

前言 本博客在 一下文章关于 map 和 set 讲解之下,对 map 当中的 operator[] ()函数的功能运用,感受 map 功能强大。 349. 两个数组的交集 - 力扣(LeetCode) 给定两个数组 nums1 和 nums2 ,返回…

Python —— 捕获异常

1、Python中常见的异常 & 捕获异常 1、常见异常 1、NameError: name a is not defined 2、IndexError: list index out of range 3、KeyError: nam 4、ValueError: invalid literal for int() with base 10: b 5、ZeroDivisionError: div…

day42

#include <iostream>using namespace std; template <typename T> class stu { private:T num[20];T head;T low; public:stu(){}stu(T h,T l):head(h),low(l){cout<<"有参构造"<<endl;}~stu(){cout<<"析构函数"<<end…

ELAS库计算双目视差图

ELAS源码下载&#xff1a;https://www.cvlibs.net/download.php?filelibelas.zip 代码结构目录 修改/src/main.cpp如下&#xff1a; /* Copyright 2011. All rights reserved. Institute of Measurement and Control Systems Karlsruhe Institute of Technology, GermanyThi…

三分钟学会一个新技能——使用Java操作Redis

目录 1、前置准备操作 1.1、为什么要进行前置准备操作 1.2、本地如何访问到云服务上Redis的6379端口号 1.3、配置步骤&#xff1a; 2、配置后本地主机如何操作 3、常用命令举例 3.1、通用命令举例 3.2、string相关命令举例 3.3、hash相关命令举例 3.4、list相关命令…