Linux内存从0到1学习笔记(6.4,物理内存初始化之预留内存)

Posted 高桐@BILL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux内存从0到1学习笔记(6.4,物理内存初始化之预留内存)相关的知识,希望对你有一定的参考价值。

写在前面

前面的章节中有提到过,memblock分配器会将内存划分为动态管理的内存(保存在memblock的memory type的数组)和静态预留的内存(保存在memblock的reserved type的数组)。

linux_mainline-5.17.0/include/linux/memblock.h 

/**
 * struct memblock - memblock allocator metadata
 * @bottom_up: is bottom up direction?
 * @current_limit: physical address of the current allocation limit
 * @memory: usable memory regions
 * @reserved: reserved memory regions
 */
struct memblock 
	bool bottom_up;  /* is bottom up direction? */
	phys_addr_t current_limit;
	struct memblock_type memory;
	struct memblock_type reserved;
;

我们来了解下预留内存是如何初始化的。

一、memblock分配器初始化预留内存

在ARM Linux中,各种设备的相关属性描述都采用DTS方式来呈现。DTS是"Device Tree Source"的简称,最早是由PowerPC等其他体系结构使用的FDT(Flattened Device Tree)转变过来的。

内核reserved type在完成fdt内存区域的地址映射之后(fixmap_remap_fdt),内核会对fdt进行扫描,以便完成reserved type数组的构建。

以上是关于Linux内存从0到1学习笔记(6.4,物理内存初始化之预留内存)的主要内容,如果未能解决你的问题,请参考以下文章

Linux内存从0到1学习笔记(6.8,物理内存初始化之buddy伙伴系统)

Linux内存从0到1学习笔记(六,物理内存初始化之四 --- 内存分配器)---持续更新

Linux内存从0到1学习笔记(六,物理内存初始化) --- 更新中

Linux内存从0到1学习笔记(6.10 物理内存初始化之vmalloc分配器)

Linux内存从0到1学习笔记(6.7,物理内存初始化之CMA初始化)

Linux内存从0到1学习笔记(六,物理内存初始化之三 --- 物理内存管理数据结构)