Hw1:NexOS 用户态编程与系统调用(对应实验一)¶
作业定位¶
Hw1是实验一“NexOS用户态编程与系统调用”的配套作业;- 本次作业侧重阅读、理解与书面整理,帮助你在正式实践前后梳理核心知识点;
- 完成本作业后,你应能更顺畅地进入实验一中的代码实现与调试环节。
作业目标¶
- 熟悉 NexOS 用户态程序的组织方式,掌握新增用户程序并打包进
fs.img的完整流程; - 理解用户态
Shell的基本工作机制,区分内建命令与外部命令,掌握fork/exec/wait相关执行模型; - 理解系统调用从用户态到内核态再返回用户态的路径,掌握在 NexOS 中添加新系统调用的全流程(调用号、分发、内核实现、用户态封装与测试);
作业题¶
与实验一的关系
Hw1 是实验一的配套书面作业。你可以将其理解为实验一的预习与整理任务:先阅读下列材料,完成作业题,再在实验课中继续推进对应的代码实践。
阅读说明
请在完成本次作业前,务必仔细阅读以下三个配套阅读材料页面:
上述文档包含必要的操作步骤与原理分析,能够帮助你顺利完成本次作业,并为实验一中的相关实践内容做好准备。
Warning
Hw1 截止时间为 4月2日18:00,请在截止日期之前在 BB 系统页面上提交作业。
-
阅读 NexOS 用户态程序创建指南,写出在 NexOS 中新增一个用户程序(例如
sid)所需的三个必要步骤,并分别说明:如果漏掉UPROGS或漏掉fsimg规则中的--add,会出现什么现象? -
阅读 理解 NexOS 的 Shell 工作原理,解释“内建命令”与“外部命令”的区别,并回答:为什么
cd必须做成内建命令,而echo/ls等可以作为外部命令通过fork + exec运行? -
阅读 理解 NexOS 的 Shell 工作原理,结合文件描述符约定
0/1/2,用自己的话说明:输入重定向与输出重定向分别是在“把什么接到哪个 fd 上”? -
阅读 在 NexOS 中添加系统调用,以文档示例
hello_id(int tag)为例,写出“从零添加一个系统调用”必须修改的文件与关键改动点(至少包含系统调用号、内核实现、分发表、用户态封装、头文件声明)。并说明:用户态参数与系统调用号分别通过哪些寄存器传递?返回值最终通过哪个寄存器返回给用户态?