From 89fb06d8dd2c20eef5085ec5be7d3c66b2fd6667 Mon Sep 17 00:00:00 2001 From: lcy1996 <992195697@qq.com> Date: Wed, 31 Oct 2018 01:17:26 +0800 Subject: [PATCH] Modified the expr3/report --- docs/OSTrain2018docs-g4/expr3/report.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/OSTrain2018docs-g4/expr3/report.md b/docs/OSTrain2018docs-g4/expr3/report.md index 7b7fc6e3..066fe903 100644 --- a/docs/OSTrain2018docs-g4/expr3/report.md +++ b/docs/OSTrain2018docs-g4/expr3/report.md @@ -14,9 +14,13 @@ Rust OS riscv32中之前并未实现page fault的异常处理, 目前已经加 ### 1.2 页面置换 框架中原本的页面置换算法框架仅支持单页表, 且并未在RustOS中启用而只是在ucore-memory库中进行了测试. 此外之前部分swap in/out的底层支持尚未实现(set_swapped等等). + 目前已经: + **完成了swap in/out所需的底层支持**: 由于目前框架中尚未启用copy on write, 因此实际上swap并未考虑到copy on write在page entry上所占用的标志位.不过swap标志位仅在not present时候有意义,因此通过略微修改现有框架是可以实现同时开启copy on write和swap 机制的. + **修改页面置换的框架实现,使之支持多个用户进程**: 这里主要的改动在于SwapManager除了需要记录可换出页的虚地址以为,还要记录虚地址所在的二级页表(InactivePageTable0). 在换入换出操作时可能需要短暂进行活跃页表的切换. + **在RustOS中启用页面置换**: 仅用户进程地址空间的用户页(MemorySet中所包含的地址)允许被换出.目前实现是在用户进程创建时将这些页设为swappable,在进程结束Context资源释放前先将这些页全部换入内存,然后进行unmap操作释放物理内存.