【BIOS/UEFI】 Memory Service(篇目二)DXE内存服务

DXE内存服务

DXE阶段内存布局:

        DXE阶段的内存服务包括:

  • 系统启动过程中,存储分配及释放服务;
  • 整个动态存储管理的实现,即如何从GCD中获取可使用的系统资源,构建初始化存储空间;如何从GCD中获取后续系统资源以维持整个存储空间管理的正常运行。

System Memory

        用于内存的分配和释放,以及获取系统的内存映射。

AllocatePages()

        函数分配请求的页面数,返回一个指针指向内存引用的位置中的页面范围的基址。该函数通过扫描内存映射定位空闲的内存页面。当发现一个物理上连续的页面足够大且满足Type类型时,函数会更改内存映射,指示这些页面是 MemoryType 类型。

 FreePages()

        函数将由 AllocatePages() 分配给固件的内存返还给系统。

 GetMemoryMap()

        函数返回当前的内存映射。映射是一个内存描述符数组,每个描述符描述一个连续的内存块。不管内存是如何使用的,内存映射都描述,包括由AllocatePages() 和 AllocatePool()分配的以及固件自己使用的内存块。

        内存映射仅用于描述系统中存在的内存。OS可以自行决定使用内存映射中没有描述的内存范围地址。

 AllocatePool()

        函数从类型为PoolType的内存中分配Size字节大小的内存区域,并返回Buffer引用的位置中分配的内存地址。所有分配都是八字节对齐的。

 FreePool()

动态存储

关键数据结构

MEMORY_MAP

        MEMORY_MAP 是用来存储空间信息的链表节点。

  • Start和End:描述地址的范围;
  • FromPages:描述该节点在临时数组mMapStack 中还是动态存储页面中;
  • VirtualStart :用于启动操作系统时进行物理地址到虚拟地址空间转换。

EFI_MEMORY_TYPE_STATISTICS

        用于跟踪每种内存类型的内存区域以合并相似内存类型的条目。

  • BaseAddress和MaximumAddress:描述存储地址空间的范围;
  • CurrentNumberOfPages:记录该种类的存储空间还有多少空间可以被分配;
  • NumberOfPages:记录页面总数,包块已分配的和未分配的。

关键函数

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BIOS(Basic Input/Output System)和UEFI(Unified Extensible Firmware Interface)是计算机系统用于启动和初始化硬件设备的软件接口。HII(Human Interface Infrastructure)是UEFI的一个基本框架,它提供了一种标准化的方式来创建和管理图形用户界面(GUI)。下面是对BIOS/UEFI和HII的基本概述: 1. BIOSBIOS是一种早期的固件接口,在过去的计算机系统广泛使用。它负责在计算机启动时初始化硬件设备,并加载操作系统。BIOS通常使用基于文本的用户界面(TUI),通过键盘输入来进行配置和设置。 2. UEFIUEFIBIOS的后继者,它提供了更先进的系统启动和硬件初始化功能。UEFI支持更大的硬盘容量、更快的启动速度和更丰富的扩展性。与BIOS相比,UEFI使用图形用户界面(GUI)来提供更直观和易用的界面。 3. HII:HII是UEFI规范定义的一个基本框架,它提供了一套标准化的API和工具,用于创建、管理和显示UEFI图形用户界面。HII使得开发人员可以轻松地设计和定制UEFI界面,以满足用户的需求。HII还支持多语言和可扩展的用户界面,提供了更好的用户体验。 总而言之,BIOS/UEFI是计算机系统用于启动和初始化硬件设备的软件接口,而HII是UEFI的一个基本框架,用于创建和管理图形用户界面。它们共同为计算机提供了更快、更稳定和更易用的启动和配置功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值