1
0
mirror of https://github.com/rcore-os/rCore.git synced 2024-11-22 08:06:17 +04:00

report4 fs part

This commit is contained in:
Ben Pig Chu 2018-11-16 06:28:06 +08:00
parent 501de6f0d4
commit 9c56868490

View File

@ -52,15 +52,33 @@ Rust OS riscv32中之前并未实现page fault的异常处理, 目前已经加
原本进程管理中pid资源的释放需要由wait它的进程释放但是这样一来如果父进程没有wait孩子则pid资源无法释放也无法处理多个进程wait一个进程的情况。现在将pid的释放交由process_mamanger来管理对于每个子进程都将其父亲放入等待列表如果一个进程退出后会将自己在孩子的等待队列中删除如果一个进程已经结束且等待队列为空则释放此pid。 原本进程管理中pid资源的释放需要由wait它的进程释放但是这样一来如果父进程没有wait孩子则pid资源无法释放也无法处理多个进程wait一个进程的情况。现在将pid的释放交由process_mamanger来管理对于每个子进程都将其父亲放入等待列表如果一个进程退出后会将自己在孩子的等待队列中删除如果一个进程已经结束且等待队列为空则释放此pid。
### 2.4 将进程关系树维护迁移至进程管理模块 ### 2.4 将进程关系树维护迁移至进程管理模块
上述方法可以方便的实现wait(0)的操作所以将原来的丑陋的wait(0)的实现更新。最后由于结构上的统一性与thread实现相关的需求将父子关系的维护从kernel挪至process模块。 上述方法可以方便的实现wait(0)的操作所以将原来的丑陋的wait(0)的实现更新。最后由于结构上的统一性与thread实现相关的需求将父子关系的维护从kernel挪至process模块。
## 3 文件系统 ## 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 测试结果
### 4.1 用户程序测试结果 ### 4.1 用户程序测试结果
目前用户程序测试结果如下: 目前用户程序测试结果如下:
| 测试程序 | 原始RustOS是否通过 | 是否通过 | 错误原因分析 | | 测试程序 | 原来的RustOS是否通过 | 现在的RustOS是否通过 | 错误原因分析 |
| :------: | :------: | :------: | : ------: | |:------:|:------:|:------:|:------:|
| waitkill | 通过 | 通过 | | | waitkill | 通过 | 通过 | |
| sleep | 通过 | 通过 | | sleep | 通过 | 通过 |
| spin | 通过 | 通过 | | spin | 通过 | 通过 |