From 1c7d83a07500fcd5a6e4a2232cab47b166754c88 Mon Sep 17 00:00:00 2001 From: xiaoyi1212 Date: Tue, 24 Sep 2024 11:14:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0OS=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../\351\241\271\347\233\256/MdrOS/task.md" | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git "a/\346\225\231\347\250\213/\346\255\243\346\226\207/\351\241\271\347\233\256/MdrOS/task.md" "b/\346\225\231\347\250\213/\346\255\243\346\226\207/\351\241\271\347\233\256/MdrOS/task.md" index 2e76f69d..c5ec9a61 100644 --- "a/\346\225\231\347\250\213/\346\255\243\346\226\207/\351\241\271\347\233\256/MdrOS/task.md" +++ "b/\346\225\231\347\250\213/\346\255\243\346\226\207/\351\241\271\347\233\256/MdrOS/task.md" @@ -46,6 +46,28 @@ PCB相比TSS拥有更快的任务切换速度, 且可以自定义多种进程私 > 在用户程序发生系统调用时禁止进行该CPU的任务切换, 不然syscall无法正确返回 +进程切换过程中, 需要切换的寄存器可以参考TSS的结构, 以下展示了进程如何切换上下文 + +```c +struct context{ + uint32_t esp; + uint32_t ebp; + uint32_t ebx; + uint32_t esi; + uint32_t edi; + uint32_t ecx; + uint32_t edx; + uint32_t eflags; + + uint32_t eax; + uint32_t eip; + uint32_t ds; + uint32_t cs; + uint32_t ss; + fpu_regs_t fpu_regs; // FPU 标记, 是否启用FPU +}; +``` + * CoolPotOS的顺序任务调度 [task.c kernel_thread(line:167)](/教程/示例代码/项目/mdrOS/task.c#L167) ## 补充