mirror of
https://github.com/rcore-os/rCore.git
synced 2024-11-25 01:16:18 +04:00
Update report.md
This commit is contained in:
parent
38666df04e
commit
ec2a759975
@ -44,7 +44,14 @@ Rust OS riscv32中之前并未实现page fault的异常处理, 目前已经加
|
||||
* 获取页表项方法中存在的bug修复: 该bug目前不会影响OS运行, 但是这显然是十分危险的(比如在多核时,或者被中断时). 可能的修复方式是fork一份riscv库并对其进行修改,提供对页表项的操作接口.
|
||||
|
||||
## 2 进程管理与同步互斥
|
||||
移植了王润基进程线程管理模块的重构结果并维护debug的更新,在此基础上重构了eventhub的数据处理方式以补全实现sleepkill的操作,解决只能被1人wait和不被wait pid就无法释放的问题,并将pid的释放与进程间父子关系的维护挪至processor处理。
|
||||
### 2.1 移植新的进程管理架构
|
||||
王润基重构了进程管理库的架构,将其移植到我们的工程并且和本地修改过的页表处理相对接,并且在王润基更新debug的相关commit后维护更新。
|
||||
### 2.2 修改完善了进程管理的sleepkill部分
|
||||
王润基新的process重构后sleepkill处于TODO的状态,原因是event_hub采用了堆的rust自带库而这个堆实现简单无法高效的从堆中删除数据,所以使用链表重构了event_hub、添加删除功能并补全了process_mamanger中sleepkill的相关部分。
|
||||
### 2.3 改进了进程管理的相关策略
|
||||
原本进程管理中pid资源的释放需要由wait它的进程释放,但是这样一来如果父进程没有wait孩子则pid资源无法释放,也无法处理多个进程wait一个进程的情况。现在将pid的释放交由process_mamanger来管理,对于每个子进程都将其父亲放入等待列表,如果一个进程退出后会将自己在孩子的等待队列中删除,如果一个进程已经结束且等待队列为空则释放此pid。
|
||||
### 2.4 将进程关系树维护迁移至进程管理模块
|
||||
上述方法可以方便的实现wait(0)的操作,所以将原来的丑陋的wait(0)的实现更新。最后由于结构上的统一性与thread实现相关的需求,将父子关系的维护从kernel挪至process模块。
|
||||
## 3 文件系统
|
||||
@朱书聪
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user