tg-rcore-tutorial-kernel-vm 0.4.2-preview.6

Kernel virtual memory management for rCore tutorial OS.
Documentation

tg-kernel-vm

Kernel virtual memory management for the rCore tutorial operating system.

设计目标

  • 提供教学内核可复用的虚拟内存管理抽象(以 Sv39 为主)。
  • 将“页表遍历/映射细节”与“章节策略逻辑”解耦。
  • 支持按章节逐步扩展:从基础映射到进程地址空间复制。

总体架构

  • PageManager<Meta> trait:
    • 约束底层物理页管理能力(页分配、根页表访问、地址转换等)。
  • AddressSpace<Meta, M>
    • PageManager 之上提供高层地址空间操作。
  • page_table 导出:
    • 复用底层页表结构、标志与地址类型。

主要特征

  • AddressSpace 统一管理映射/解除映射/翻译。
  • 可按标志控制读写执行与用户态访问权限。
  • 提供地址空间复制能力,支持 fork 等场景。
  • 适配 no_std、裸机内核。

功能实现要点

  • 将不同章节中的物理页来源统一抽象为 PageManager
  • AddressSpace 处理页面粒度映射与权限标志组合。
  • 通过类型参数 Meta 保留架构相关元数据扩展点。

对外接口

  • trait:
    • PageManager<Meta>
  • 结构体:
    • AddressSpace<Meta, M>
  • 常见方法(AddressSpace):
    • new()
    • root_ppn()
    • map(...)
    • unmap(...)
    • translate(...)
    • cloneself(...)
  • 模块导出:
    • page_table

使用示例

use tg_kernel_vm::{AddressSpace, page_table::Sv39};

let _space = AddressSpace::<Sv39, MyPageManager>::new();
  • 章节内真实用法:
    • ch4/src/main.rs 构建内核地址空间与映射。
    • ch4/src/process.rsch5/src/process.rs 管理进程用户地址空间。

与 ch1~ch8 的关系

  • 直接依赖章节:ch4ch8
  • 关键职责:承接页表管理、地址翻译、进程地址空间隔离。
  • 关键引用文件:
    • ch4/Cargo.toml
    • ch4/src/main.rs
    • ch5/src/process.rs
    • ch8/src/process.rs

License

Licensed under either of MIT license or Apache License, Version 2.0 at your option.