Bochs源码分析#22:内存分页机制模拟
发布时间
阅读量:
阅读量
前言
为了满足需求,在处理线性地址空间时,请问如何将这一特定区域划分到物理内存区域?在深入分析代码之前,请问您是如何打算模拟这一分页过程的?经过一番思考后发现其实较为直接——核心思路即在于构建索引表来进行地址映射。具体实现细节位于附录部分中详细展开——该段内容未进行复杂的属性和权限验证工作,请问您是否已经对这一机制有了基本认识?
代码解读
首先,请准备好三块物理页面,并分别包括 PDE 页面表、PTE 页面表以及将使用的物理页面。
PULONG32 PdPage = (PULONG32)malloc(PAGESIZE_4K); // PDE 页表项
PULONG32 PtPage = (PULONG32)malloc(PAGESIZE_4K); // PTE 页表项
PUCHAR PhysicalPage = (PUCHAR)malloc(PAGESIZE_4K); // 准备的物理页
随后开始编写线性地址的解析代码,并依照此格式来进行解析。现在决定采用10-10-12分页模式
void GetOffset(ULONG32 address, int* offset_1, int* offset_2, int* offset_3) {
*offset_1 = (addres
全部评论 (0)
还没有任何评论哟~
