UEFI-MemoryManagement
Pedroa
这个作者很懒,什么都没留下…
展开
-
Memory Management (DXE) 代码简析
关于代码分析,这次先来CoreInitializeMemoryServces (DxeMain.c) 这个函数是DXE 阶段初始化内存相关的第一个函数,先来理清这个函数,主要做了以下三件事情:1 初始化Pool 内存分配相关的数据结构 2 通过查找Hob ,找到能容纳DxeCore 的内存地址 3 通过CoreAddMemoryDescriptor 函数给接下来内存分配的servic原创 2017-01-02 14:20:40 · 2829 阅读 · 0 评论 -
Memory Management (0) 前言
对于现代软件,内存管理是很重要的内容,了解一个软件的内存管理对于了解这个软件架构或者编写程序有很大的帮助。所以接下来的系列博客就会介绍UEFI 的内存管理。博客大纲基本是如下:PEI 阶段内存管理DXE 阶段内存管理汇报内存资源给OSOS 如何读取和利用uefi firmware 汇报的内存资源这系列博客也是本人学习的记录,现在分享给想学习UEFI 的同学,大家一起进步。 因为是按照自己原创 2016-12-27 14:14:31 · 1327 阅读 · 0 评论 -
Memory Management (1)PEI 信息建立
PEI 阶段有它自己的使命,其中非常重要的一个就是初始化内存,建立内存信息,然后传给下一个阶段。为了完成PEI 的这些任务,它也需要有内存管理。1 PEI 阶段和内存相关的,我们又不得不提一个重要的结构HOBHOB (Hand-Off Block) Hob 主要功能就是记录信息并且可以传递出去。(关于HOB 初始化,还有例如PEI 阶段临时内存到恒定内存,堆栈转换等等,会在之后PEI Core 里原创 2016-12-27 15:40:57 · 2219 阅读 · 1 评论 -
Memory Management(2) PEI 内存分配
PEI 阶段内存分配的函数有两个:AllocatePage()AllocatePool()具体请参考Vol1_PEI_1_5 4.6 还是看图,有的时候,我看spec,我就喜欢看总纲的图,每次都看,每次看会有不同的理解。 关于这两个函数AllocatePage(),AllocatePool()。如果仅仅通过字面上,一个是分配比较大内存,一个是比较小的内存。但是两个fu原创 2016-12-27 21:41:39 · 3559 阅读 · 0 评论 -
Memory Management (3) DXE 概括
学习一个知识点,就和去一个陌生的城市很像,你首先要对这个城市有大概的了解,和一些准备工作,包括查询城市地图,人文地理等等。然后在这个城市多住一段时间,慢慢去感受每一条街头巷尾,特色小吃,人文环境。这样你才能对这个城市有比较具体全面的了解。总览 : 首先UEFI Firmware 它要向OS 汇报内存资源(这里的内存不单单指system memory,也包括地址线上映射的其他设备的memory),它原创 2016-12-28 13:27:47 · 1392 阅读 · 0 评论 -
Memory Management (4) DXE GCD 机制
上一篇大概介绍了,关于UEFI 资源管理与汇报的大概流程。这篇就主要介绍一下GCD 机制。关于GCD 的讲解主要spec 有 PI Vol2_DXE_CIS_1_5 7.2 和 Beyond BIOS2nd chapter8 . GCD: GCD (Global Coherency Domain ) 这些function 主要是管理对于处理器可见的 memory 和 IO 的资源。memory原创 2016-12-28 14:24:40 · 3718 阅读 · 0 评论 -
Memory Management(5)DXE 内存管理流程
OS 也好或者UEFI Firmware 也好,都有各自的应用领域,为了更好的完成自己的角色,就会用适合自己的策略方法。由于UEFI Firmware 是现代化软件,所以有些思想和目前主流软件思想有类似的地方,所以有人会去对UEFI Firmware 和 OS 做比较。比较是可以的,但是首先得非常准确你比较的内容的应用场景,技术限制,等等。举例Firmware 就是你房子装修前的那种毛坯房,它会把水原创 2016-12-30 23:10:28 · 2493 阅读 · 0 评论 -
Memory Management (DXE) 实例分析
这篇通过实例分析AllocatePages() 来对之前的知识点进行巩固加深并且串联起来。 先来看一下UEFI 下AllocatePages的定义typedefEFI_STATUS(EFIAPI *EFI_ALLOCATE_PAGES) (IN EFI_ALLOCATE_TYPE Type,IN EFI_MEMORY_TYPE MemoryType,IN UINTN Pages,IN原创 2017-01-11 11:28:37 · 4933 阅读 · 3 评论