mirror of
https://github.com/rcore-os/rCore-Tutorial-v3.git
synced 2024-11-22 01:16:26 +04:00
.. | ||
.cargo | ||
src | ||
.gitignore | ||
build.py | ||
Cargo.toml | ||
Makefile | ||
README.md |
Tutorial 第三章测试用例 part1
在 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
退出之后,系统也应该退出。