OS 学习记 之 XV6
💡
原文中文,约9500字,阅读约需23分钟。
📝
内容提要
本文介绍了XV6操作系统中实现用户态到内核态跳转的方法,以及Lazy allocation和Copy-on-Write(COW)优化。同时还介绍了XV6的启动过程。
🎯
关键要点
- XV6 是 MIT6.S081 操作系统课程使用的实验操作系统内核,使用纯 C 语言编写,运行在 RISC-V 处理器上。
- 操作系统内核负责管理计算机硬件资源,为用户程序提供简单易用的接口。
- 进程是操作系统内核的重要抽象,包含程序运行所需的所有信息,如文件、栈、寄存器状态和内存。
- 用户态和内核态通过 RISC-V 处理器的三种模式区分,用户态程序可以通过特定条件跳转到内核态。
- 虚拟内存为每个程序提供独立的地址空间,通过页表实现虚拟地址到物理地址的映射。
- 内核的地址空间和用户进程的地址空间有不同的结构,内核使用直接映射简化物理内存读写。
- 中断(trap)分为系统调用、异常和中断,RISC-V 处理器通过时钟中断和 ecall 指令实现用户态到内核态的跳转。
- XV6 中的 Lazy allocation 通过延迟分配物理页来优化内存使用,避免不必要的内存浪费。
- XV6 中的进程创建通过 fork 和 exec 系统调用实现,使用 COW(Copy-on-Write)优化避免深拷贝物理页。
- XV6 的启动过程涉及初始化内核和设置必要的硬件资源。
➡️