OSCamp学习笔记
本文最后更新于 2026年3月30日 凌晨
Error
这一部分是学习OCaml(,采用经典的 None/Some(n) 形式。
然后Rust还有自己特化的一个错误类型 Result<type,errorType>, 它包括正常运行时的 Ok(n) 和错误时的 Err(e).
Error2
一个小知识点, 整个返回类型如果为 Result,可以在相关内容后加一个 ?,和对应 match 表达式一个效果。
Error3
那么如果一个函数本身就不用返回什么东西呢。这里我们可以这样改造:
- 给函数的返回值改为
Result<(),ErrType>的形式。 - 在函数的末尾加一个
OK(()),因为我们并不会用到()的部分。
PageTable相关
首先,三级页表在内存中是在一个哈希表里的,只不过上面会有很多映射关系,最深三层。
然后虚拟地址 va 就包含着这三层需要的信息和offset。
真实地址包含 ppn 和 offset 两部分,还愿的时候要根据页表类型灵活实现。
大页对齐保证了低 21 位为 0, 所以可以保证在 |offset 的时候就算 offset 为 21 位也不会冲突
OSCamp学习笔记
https://chenxizhou233.github.io/posts/cde1545b.html