diff --git a/docs/OSTrain2018docs-g4/expr4/report.md b/docs/OSTrain2018docs-g4/expr4/report.md index 8e80095..8ba6903 100644 --- a/docs/OSTrain2018docs-g4/expr4/report.md +++ b/docs/OSTrain2018docs-g4/expr4/report.md @@ -52,15 +52,33 @@ Rust OS riscv32中之前并未实现page fault的异常处理, 目前已经加 原本进程管理中pid资源的释放需要由wait它的进程释放,但是这样一来如果父进程没有wait孩子则pid资源无法释放,也无法处理多个进程wait一个进程的情况。现在将pid的释放交由process_mamanger来管理,对于每个子进程都将其父亲放入等待列表,如果一个进程退出后会将自己在孩子的等待队列中删除,如果一个进程已经结束且等待队列为空则释放此pid。 ### 2.4 将进程关系树维护迁移至进程管理模块 上述方法可以方便的实现wait(0)的操作,所以将原来的丑陋的wait(0)的实现更新。最后由于结构上的统一性与thread实现相关的需求,将父子关系的维护从kernel挪至process模块。 + ## 3 文件系统 -@朱书聪 +### 3.1 之前已经完成了的内容 +- 修复与 `size` 和 `nlinks` 字段相关的错误 +- 实现了 `unlink` 和 `link` +- 调整了部分接口用 `get_entry` 和 `find` 取代 `list` 和 `lookup` +### 3.2 上次报告以来新完成的内容 +- 实现了 `rename` 和 `move_` +- 王润基抢先帮忙实现了文件系统的线程安全,从而实现了文件描述符和一些文件相关的系统调用 + - 用户程序还是只能打开文件、读写文件以及读文件夹内容(因为现有用户程序只需要这些功能就可以正常运行) +- 王润基还顺便帮忙修正了新发现的 `inode` 与 `fs` 之间的所有权关系问题 +- 在文件系统接口中(在一般的出错状态下)返回错误类型而非直接 `panic` + - 尚未正式使用 +### 3.3 TODO +- 更完整地实现文件系统相关的系统调用 + - 可能需要更多的用户程序用来测试 +- 实装错误类型机制,要能够将其传给用户程序 +- 实现 `mount` 机制? +- 符号链接相关? +- 将 `vfs` `device` `file` 等与具体文件系统无关的内容移动到主仓库的新包中(`crate/vfs`)? ## 4 测试结果 ### 4.1 用户程序测试结果 目前用户程序测试结果如下: -| 测试程序 | 原始RustOS是否通过 | 是否通过 | 错误原因分析 | -| :------: | :------: | :------: | : ------: | +| 测试程序 | 原来的RustOS是否通过 | 现在的RustOS是否通过 | 错误原因分析 | +|:------:|:------:|:------:|:------:| | waitkill | 通过 | 通过 | | | sleep | 通过 | 通过 | | spin | 通过 | 通过 |