内存管理:页表(译文)
本文译自 OSDev Wiki 上的一篇文章,原文链接为 Page Tables。
页面表(或页映射层级)用于将每个虚拟页映射到对应的物理页。零个或多个虚拟页可以对应同一个物理页。页的大小取决于处理器模式(保护模式、兼容模式或长模式)、所使用的扩展(如 PAE)以及处理器所支持的虚拟地址位数(当前 AMD64 处理器最多支持 48 位虚拟地址)。
本文译自 OSDev Wiki 上的一篇文章,原文链接为 Page Tables。
页面表(或页映射层级)用于将每个虚拟页映射到对应的物理页。零个或多个虚拟页可以对应同一个物理页。页的大小取决于处理器模式(保护模式、兼容模式或长模式)、所使用的扩展(如 PAE)以及处理器所支持的虚拟地址位数(当前 AMD64 处理器最多支持 48 位虚拟地址)。
本文译自 OSDev Wiki 上的一篇文章,原文链接为 Page Frame Allocation。
这些算法用于在需要时向你提供新的页帧(page frame)。该算法的调用者通常并不关心返回的是哪一帧,特别是当请求 n 个页时,也不需要返回连续的页帧(除非你要为网络包缓冲等 DMA 操作分配内存)。
本文本文参考OSDev Wiki上关于内存管理单元(MMU)的介绍,原文地址:https://wiki.osdev.org/Memory_Management_Unit
本文参考OSDev Wiki上关于“内存分配”的介绍,原文地址:https://wiki.osdev.org/Memory_Allocation
本文结合实际 ELF 二进制反汇编输出,整理出常见指令、字段、操作类型,以及它们在函数、初始化、PLT/ GOT 中的作用。
本文本文参考OSDev Wiki上关于CPU缓存的介绍,原文地址:https://wiki.osdev.org/CPU_Caches
最初,内存的速度和 CPU 一样快。随着时间推移,CPU 的速度越来越快。内存速度也在提升,但无法跟上 CPU 提升的速度,这意味着 CPU 需要花越来越多的时间等待来自 RAM 的数据(这会对性能造成严重影响)。