任务管理模块,为 rCore 教学操作系统提供任务和进程管理功能,包括调度和关系管理。
- 提供章节内核可复用的任务管理抽象,避免将调度和关系逻辑散落在各章节。
- 用 trait 统一“任务容器管理”和“调度队列策略”。
- 用 feature 分层支持“仅进程”与“进程 + 线程”两种阶段。
- ID 层:
ProcId、ThreadId、CoroId。 - 抽象层:
Manage<T, I>:对象增删查改接口。Schedule<I>:调度队列接口。
- 关系层:
ProcRel(proc)ProcThreadRel(thread)
- 管理器实现:
PManager(进程)PThreadManager(线程)
- 任务对象通过 ID 关联,降低结构体互相持有复杂度。
- 调度策略通过
Schedule可替换。 - 关系管理支持
wait/waitpid/waittid等语义需要。 - feature:
proc:进程管理thread:线程管理
- 关系容器维护“运行中”和“已结束”子任务列表,便于实现等待语义。
- 管理器负责当前任务状态迁移与调度队列交互。
- 尽量保持与章节内 PCB/TCB 结构解耦,便于教学增量演进。
- ID 类型:
ProcIdThreadIdCoroId
- trait:
Manage<T, I>Schedule<I>
- 结构体:
PManager,ProcRel(proc)PThreadManager,ProcThreadRel(thread)
use tg_task_manage::{Manage, Schedule, ProcId};
fn _touch_id(id: ProcId) -> ProcId {
id
}- 章节内真实用法:
tg-rcore-tutorial-ch5/src/processor.rs使用PManager管理进程调度。tg-rcore-tutorial-ch8/src/processor.rs使用PThreadManager管理线程调度。
- 直接依赖章节:
tg-rcore-tutorial-ch5到tg-rcore-tutorial-ch8。 - 关键职责:提供进程/线程 ID、关系维护与调度抽象。
- 关键引用文件:
tg-rcore-tutorial-ch5/Cargo.tomltg-rcore-tutorial-ch5/src/processor.rstg-rcore-tutorial-ch8/src/processor.rs
Licensed under either of Apache License, Version 2.0 or MIT license at your option.