操作系统
第一章
第一章围绕 rCore 最小执行环境展开,目标不是一开始就写完整操作系统,而是先把一个普通 Rust 程序逐步退回到裸机环境,最终让内核在 QEMU 的 RISC-V 平台上真正启动起来。
实验要求可以概括成三件事:第一,完成 ch1 的最小启动链,让程序能够脱离 std 和普通 main,在 riscv64gc-unknown-none-elf 目标上运行;第二,补齐 panic_handler、_start、栈初始化、SBI 输出和退出等最基本的执行环境;第三,在此基础上把 Hello world 扩展成可视化的 ch1-tangram 图形实验。
ch1 需要实现的核心内容包括:理解普通应用依赖 std、runtime 和操作系统系统调用;切换到 bare-metal 目标后,使用 no_std 和 no_main 重建最小内核入口;通过 _start 建立机器真正入口并设置栈指针;借助 SBI 完成字符输出和关机;理解 linker.ld、入口地址、ELF/bin 镜像、QEMU 与 RustSBI 的交接关系。
这四份 Markdown 还把代码链和实验链路整理得很完整:从 cargo 编译、QEMU 启动、内核入口执行,到 tg-sbi 输出 Hello world,再到 VirtIO-GPU、framebuffer、七巧板 OS 图案渲染,形成了一个从最小字符输出到图形输出的完整 ch1 学习闭环。
如果一句话总结这一章,就是:第一章不是在教怎么打印一句 Hello world,而是在教如何从零搭起一个最小可运行的裸机内核执行环境,并在这个环境上完成 ch1 的字符输出与图形实验。
