mirror of
https://github.com/rcore-os/rCore.git
synced 2024-11-21 23:56:18 +04:00
Modified the expr3/report
This commit is contained in:
parent
bdd60dd731
commit
89fb06d8dd
@ -14,9 +14,13 @@ Rust OS riscv32中之前并未实现page fault的异常处理, 目前已经加
|
|||||||
|
|
||||||
### 1.2 页面置换
|
### 1.2 页面置换
|
||||||
框架中原本的页面置换算法框架仅支持单页表, 且并未在RustOS中启用而只是在ucore-memory库中进行了测试. 此外之前部分swap in/out的底层支持尚未实现(set_swapped等等).
|
框架中原本的页面置换算法框架仅支持单页表, 且并未在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 机制的.
|
**完成了swap in/out所需的底层支持**: 由于目前框架中尚未启用copy on write, 因此实际上swap并未考虑到copy on write在page entry上所占用的标志位.不过swap标志位仅在not present时候有意义,因此通过略微修改现有框架是可以实现同时开启copy on write和swap 机制的.
|
||||||
|
|
||||||
**修改页面置换的框架实现,使之支持多个用户进程**: 这里主要的改动在于SwapManager除了需要记录可换出页的虚地址以为,还要记录虚地址所在的二级页表(InactivePageTable0). 在换入换出操作时可能需要短暂进行活跃页表的切换.
|
**修改页面置换的框架实现,使之支持多个用户进程**: 这里主要的改动在于SwapManager除了需要记录可换出页的虚地址以为,还要记录虚地址所在的二级页表(InactivePageTable0). 在换入换出操作时可能需要短暂进行活跃页表的切换.
|
||||||
|
|
||||||
**在RustOS中启用页面置换**: 仅用户进程地址空间的用户页(MemorySet中所包含的地址)允许被换出.目前实现是在用户进程创建时将这些页设为swappable,在进程结束Context资源释放前先将这些页全部换入内存,然后进行unmap操作释放物理内存.
|
**在RustOS中启用页面置换**: 仅用户进程地址空间的用户页(MemorySet中所包含的地址)允许被换出.目前实现是在用户进程创建时将这些页设为swappable,在进程结束Context资源释放前先将这些页全部换入内存,然后进行unmap操作释放物理内存.
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user