《深入理解Linux进程与内存》学习笔记——系统物理内存初始化

系统物理内存初始化

一、物理内存安装检测

操作系统启动时需要探测可用物理内存的地址范围,内核请求中断号15H,操作码为E820 H。
在这里插入图片描述

  1. 内核启动时调用main函数,mian调用detect_memory,物理内存安装检测从这个函数开始。
  2. 查看内核启动输出的信息,如上图所示详细的展示了BIOS对物理内存的检测结果。
    • usable:实际可用的物理内存地址范围。
    • reserved:这个内存不可被分配使用,可能是内存启动时用来保存内核的一些数据,也没有实际的物理内存映射到这里。

二、memblock内存分配器的创建

获取到可用内存地址范围后,需要将内存管理起来。

在这里插入图片描述

如果是预留内存就调用memblock_reserve添加到reserved成员中。添加过程会修改reserved中的区域数量cnt,然后再设置regions中的一个元素。可用内存的添加同上。

struct memblock memblock __initdata_memblock = {
   
   
	.memory.regions		= memblock_memory_init_regions,
	.memory.cnt		= 1,	/* empty dummy entry */
	.memory
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值