首先切换至 master 分支,实验 4, 5 和 6 均使用 master 分支进行实验.
在 kernel/src/mm/page_table.rs 中的以下四个函数均以 todo!() 标记:
find_pte_create:三级页表遍历,不存在的中间节点自动分配
find_pte:三级页表遍历,不存在时返回 None
map:利用 find_pte_create 建立 VPN → PPN 映射
unmap:利用 find_pte 清零叶子 PTE
fn find_pte_create(&mut self, vpn: VirtPageNum) -> Option<&mut PageTableEntry> {
todo!("Lab 4: implement find_pte_create")
}
fn find_pte(&self, vpn: VirtPageNum) -> Option<&mut PageTableEntry> {
todo!("Lab 4: implement find_pte")
}
pub fn map(&mut self, vpn: VirtPageNum, ppn: PhysPageNum, flags: PTEFlags) {
todo!("Lab 4: implement map")
}
pub fn unmap(&mut self, vpn: VirtPageNum) {
todo!("Lab 4: implement unmap")
}
需要实现这些函数通过测评.