练习
编程作业
可以使用前一个实验完成后的代码来做本实验。如果没有完成前一个实验,也可以从 rCore-Tutorial ch8
开始修改,不影响实验本身。如果没有做到 ch8
,也可以用全新的 ch7
来做实验。
在本实验中,你需要:
跟随前面文档的指引修改内核,使得运行测例
hellostd
可以输出Unsupported syscall_id: 29
。根据 通过 Manual Page 添加 Syscall 一节中介绍的方法,添加其他
syscall
,使得测例hellostd
可以正常运行并输出hello std
。(提示:只有一个新的syscall
需要实现,其他的都可以用内核中现有syscall
代替或者什么都不做直接返回0
)
问答作业
- 查询标志位定义。
标准的 waitpid
调用的结构是 pid_t waitpid(pid_t pid, int *_Nullable wstatus, int options);
。其中的 options
参数分别有哪些可能(只要列出不需要解释),用 int
的 32 个 bit 如何表示?
你可能需要根据通过 Manual Page 添加 Syscall一小节的指引下载 musl
源码,并用寻找报错位置 中提到的全局搜索技巧进行分析。
报告要求
- 完成编程作业,描述实现思路以及修改的代码。本章没有自动评测,我们会人工检查你的代码实现和报告。
- 完成问答题。
- 推荐使用
markdown
格式 - 和 rCore-Tutorial 实验类似,报告放在
reports/
文件夹下,但命名为labr2.md
或labr2.pdf