From 632ae01ab9fcd319829b155d79fe752437b47c6a Mon Sep 17 00:00:00 2001 From: Yifan Wu Date: Mon, 14 Dec 2020 17:02:29 +0800 Subject: [PATCH] Update ch3-coop Description. --- ch3-coop/README.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/ch3-coop/README.md b/ch3-coop/README.md index b5bf1e13..ea1e0734 100644 --- a/ch3-coop/README.md +++ b/ch3-coop/README.md @@ -1,4 +1,19 @@ # Tutorial 第三章测试用例 part1 -在 Tutorial 第三章第一阶段中,只需实现一个非抢占式调度的分时多任务系统。 +在 Tutorial 第三章第一阶段中,只需实现一个非抢占式调度的分时多任务系统。在 `src/bin` 目录中,我们可以找到三个应用程序: +* `00write_a` +* `01write_b` +* `02write_c` + +我们需要在系统初始化的时候将它们分别加载到一个应用与内核预先约定的物理地址。对于编号 0 <= i <= 2,应该将其加载到物理地址 0x80100000+0x20000\*i 处运行。这需要在构建应用程序的时候动态调整 `linker.ld` 中的应用起始地址,参见 `build.py`。 + +应用被设计为运行在用户模式,批处理系统应运行在监督模式,它们都直接访问物理内存。 + +这一阶段需要实现的系统调用: + +* `sys_yield`:用来交出当前应用的 CPU 使用权并切换到下一个应用,等到再次获得 CPU 使用权才能继续向下执行。 + +阅读应用程序代码可知,每个应用都输出一个字母方阵,但是每输出一行之后就会 `sys_yield`,于是最终应该看到一个字母交错的方阵。 + +注意:当所有应用通过 `sys_exit` 退出之后,系统也应该退出。 \ No newline at end of file