From a1a34d0fac630c99fa461cf7fd03484366630f8f Mon Sep 17 00:00:00 2001 From: zhangxinyu <840317537@qq.com> Date: Wed, 24 May 2023 10:31:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0TCB=E4=BB=A5=E5=8F=8A?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E7=94=A8=E6=9D=A5=E8=A1=A8=E7=A4=BA=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E7=8A=B6=E6=80=81=E7=9A=84=E7=BB=93=E6=9E=84=E4=BD=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ch3/os/src/task/context.rs | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/ch3/os/src/task/context.rs b/ch3/os/src/task/context.rs index cb52c48..bfc58be 100644 --- a/ch3/os/src/task/context.rs +++ b/ch3/os/src/task/context.rs @@ -1,12 +1,32 @@ +// TCB的字段, 用来保存任务的状态 +#[derive(Copy, Clone, PartialEq)] +pub enum TaskStatus { + UnInit, // 未初始化 + Ready, // 准备运行 + Running, // 正在运行 + Exited, // 已退出 +} +// TCB的字段 用来保存cpu 在内核切换人物的时候 寄存器还有栈顶的信息, 这个结构体将来会传到 switch.S 中的汇编中 pub struct TaskContext{ ra: usize, // 保存了进行切换之后需要 跳转继续执行的地址 sp: usize, // 当前任务的内核栈的栈顶 - s: [usize; 12] // 当前任务内核状态 + s: [usize; 12] // 当前任务内核 有必要 保存的寄存器 +} + + +// 一个任务的主体, 用来保存或者控制一个任务所有需要的东西 +#[derive(Copy, Clone)] +pub struct TaskControlBlock { + pub task_status: TaskStatus, + pub task_cx: TaskContext, } + + +