chaos 开发日志
Contents
开发到一半感觉还是得写一下日志,不然很多事情做完了都忘记了……
2024/7/9
支持 initproc
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_start
和 initproc_end
,在内核中就可以通过这两个全局符号来获得 elf 文件的位置,从而读取并加载初始进程。
2024/7/10
从今天起到 7 月 13 号,三天的时间,计划完成文件系统的重构和 ext4 的支持。
在 github 上找到了一个 rust ext4 仓库:https://github.com/yuoo655/ext4_rs,计划将其移植过来。
文件系统的重构计划将 inode、superblock、dentry 和 filesystem 都重构成 trait。