OSCamp学习笔记

本文最后更新于 2026年3月30日 凌晨

Error

这一部分是学习OCaml(,采用经典的 None/Some(n) 形式。

然后Rust还有自己特化的一个错误类型 Result<type,errorType>, 它包括正常运行时的 Ok(n) 和错误时的 Err(e).

Error2

一个小知识点, 整个返回类型如果为 Result,可以在相关内容后加一个 ?,和对应 match 表达式一个效果。

Error3

那么如果一个函数本身就不用返回什么东西呢。这里我们可以这样改造:

  1. 给函数的返回值改为 Result<(),ErrType> 的形式。
  2. 在函数的末尾加一个 OK(()),因为我们并不会用到 () 的部分。

PageTable相关

首先,三级页表在内存中是在一个哈希表里的,只不过上面会有很多映射关系,最深三层。

然后虚拟地址 va 就包含着这三层需要的信息和offset。
真实地址包含 ppn 和 offset 两部分,还愿的时候要根据页表类型灵活实现。

大页对齐保证了低 21 位为 0, 所以可以保证在 |offset 的时候就算 offset 为 21 位也不会冲突


OSCamp学习笔记
https://chenxizhou233.github.io/posts/cde1545b.html
作者
Xizhou Chen
发布于
2026年3月12日
许可协议