内存管理

本文介绍了操作系统内存管理的各个方面,包括内存管理概述、内存大小的DTS和ACPI上报、物理内存映射、初始化过程、空间划分以及物理内存初始化。在内存初始化阶段,内核需要检测和配置内存空间,并建立相应的数据结构。用户空间和内核空间的比例通常是1:3,但可以通过配置选项进行调整。此外,文章提到了DTS在设备属性描述中的作用,以及ACPI在内存上报中的角色。
摘要由CSDN通过智能技术生成

本节思考:

在系统启动时,ARM Linux内核如何知道系统中有多大的内存空间?
32bit Linux内核中,用户空间和内核空间的比例通常是3:1,可以修改成2:2吗?
物理内存页面如何添加到伙伴系统中,是一页一页添加,还是以2的几次幂来加入呢?
在内存管理的上下文中, 初始化(initialization)可以有多种含义.在许多CPU上,必须显式设置适用于Linux内核的内存模型.在x86_32上需要切换到保护模式, 然后内核才能检测到可用内存和寄存器.

在初始化过程中, 还必须建立内存管理的数据结构,以及很多事务.因为内核在内存管理完全初始化之前就需要使用内存.
在系统启动过程期间,使用了额外的简化的内存管理模块,然后在初始化完成后,将旧的模块丢弃掉.

对相关数据结构的初始化是从全局启动函数start_kernel中开始的,该函数在加载内核并激活各个子系统之后执行.
由于内存管理是内核一个非常重要的部分,因此在特定体系结构的设置步骤中检测并确定系统中内存的分配情况后, 会立即执行内存管理的初始化.

现在大部分计算机使用DDRDual Data Rate SDRAM)的存储设备,DDR包括DDR3LDDR4LLPDDR3/4等。
DDR初始化一般在BIOSboot loader中,BIOSboot loaderDDR大小传给内核,因此从Linux内核角度看其实就是一段物理内存空间。

1. 内存管理概述

分层描述的话,内存空间可以分为3个层次,分别是用户空间层、内核空间层和硬件层。如图2.1。
图2.1 内存管理框图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
用户空间和内核空间的接口是系统调用,因此内核空间层首先需要处理这些内存管理相关的系统调用,例如sys_brksys_mmapsys_madvise等。
接下来就包括VMA管理、缺页中断管理、匿名页面、page cache、页面回收、反向映射、slab分配器、页表管理等模块了。

最下面是硬件层,包括处理器的MMU

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值