Skip to content

rcore-os/tg-rcore-tutorial-task-manage

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

tg-rcore-tutorial-task-manage

Crates.io Documentation License

任务管理模块,为 rCore 教学操作系统提供任务和进程管理功能,包括调度和关系管理。

设计目标

  • 提供章节内核可复用的任务管理抽象,避免将调度和关系逻辑散落在各章节。
  • 用 trait 统一“任务容器管理”和“调度队列策略”。
  • 用 feature 分层支持“仅进程”与“进程 + 线程”两种阶段。

总体架构

  • ID 层:ProcIdThreadIdCoroId
  • 抽象层:
    • Manage<T, I>:对象增删查改接口。
    • Schedule<I>:调度队列接口。
  • 关系层:
    • ProcRelproc
    • ProcThreadRelthread
  • 管理器实现:
    • PManager(进程)
    • PThreadManager(线程)

主要特征

  • 任务对象通过 ID 关联,降低结构体互相持有复杂度。
  • 调度策略通过 Schedule 可替换。
  • 关系管理支持 wait/waitpid/waittid 等语义需要。
  • feature:
    • proc:进程管理
    • thread:线程管理

功能实现要点

  • 关系容器维护“运行中”和“已结束”子任务列表,便于实现等待语义。
  • 管理器负责当前任务状态迁移与调度队列交互。
  • 尽量保持与章节内 PCB/TCB 结构解耦,便于教学增量演进。

对外接口

  • ID 类型:
    • ProcId
    • ThreadId
    • CoroId
  • trait:
    • Manage<T, I>
    • Schedule<I>
  • 结构体:
    • PManager, ProcRelproc
    • PThreadManager, ProcThreadRelthread

使用示例

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-ch1~tg-rcore-tutorial-ch8 的关系

  • 直接依赖章节:tg-rcore-tutorial-ch5tg-rcore-tutorial-ch8
  • 关键职责:提供进程/线程 ID、关系维护与调度抽象。
  • 关键引用文件:
    • tg-rcore-tutorial-ch5/Cargo.toml
    • tg-rcore-tutorial-ch5/src/processor.rs
    • tg-rcore-tutorial-ch8/src/processor.rs

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors