chaos 开发日志

开发到一半感觉还是得写一下日志,不然很多事情做完了都忘记了……

initproc 的作用是作为 chaos 的第一个用户态进程,fork 出其他的测试进程,或者也可以运行其他的程序作为初始进程。这样可以解决之前 chaos 在初赛的时候直接将每个测试程序作为初始进程启动,测试程序会尝试读取空的用户栈而导致的 loadPageFault 的 bug。

git commit:

  • message: 🐞 fix: fix init_proc
  • hash: 2c5e014c328fc5746cecd693b160e0c52b669714

我们将原本 rCore 的 user 文件夹移植了过来。用来生成应用程序 elf 文件,然后将其使用链接脚本链接到 chaos 内核镜像中。在内核启动之后,就可以将其作为初始应用程序(0 号进程)运行。

user 目录下运行 make build 会编译 user/src/bin 下的所有文件,在 user/target/riscv64gc-unknown-none-elf 下生成对应的 elf 文件和 .bin 纯二进制文件。

链接脚本 link_initproc.S 会将生成出来的 elf 文件链接到内核镜像的 .text 中,然后暴露出全局符号 initproc_startinitproc_end,在内核中就可以通过这两个全局符号来获得 elf 文件的位置,从而读取并加载初始进程。

从今天起到 7 月 13 号,三天的时间,计划完成文件系统的重构和 ext4 的支持。

在 github 上找到了一个 rust ext4 仓库:https://github.com/yuoo655/ext4_rs,计划将其移植过来。

文件系统的重构计划将 inode、superblock、dentry 和 filesystem 都重构成 trait。