CS1705_1170300520_郭子阳_Lab71
【实验报告概述】 这篇实验报告是关于“TinyShell”微壳的实现,由郭子阳同学在计算机科学与技术专业1703005班完成,指导教师为吴锐,实验地点为G712,日期为12月2日。实验的主要目标是理解和实现一个小型的命令行解释器,即Shell,它在操作系统中扮演着用户接口的角色。 【实验目的】 实验的主要目的是: 1. 理解进程的概念,包括如何创建和回收进程。 2. 掌握信号的机制、种类以及如何发送、阻塞和设置处理程序。 3. 了解Shell的基本功能和工作流程,包括如何执行用户输入的命令。 4. 设计并实现一个微型的Shell(TinyShell),包括解析用户输入、执行内置命令和管理后台进程等功能。 【实验环境与工具】 实验所需的硬件环境未具体说明,但通常包括一台具有足够计算能力的个人计算机。软件环境包括操作系统(可能是类Unix系统,如Linux或macOS),因为Shell通常是这些系统的组成部分。开发工具可能包含文本编辑器(如vim或emacs)、编译器(如GCC)以及用于调试的工具(如gdb)。 【实验内容】 1. `VOID EVAL(CHAR *CMDLINE)`函数:这是核心的命令解析和执行函数,负责将用户输入的字符串(CMDLINE)转化为可执行的命令。 2. `INT BUILTIN_CMD(CHAR **ARGV)`函数:处理内置命令,如`cd`、`exit`等,这些命令不需要启动新的进程即可执行。 3. `VOID DO_BGFG(CHAR **ARGV)`函数:处理命令的后台执行(&符号)和前台恢复(fg命令)。 4. `VOID WAITFG(PID_T PID)`函数:等待前台进程结束,确保命令执行完成后才进行下一步操作。 5. `VOID SIGCHLD_HANDLER(INT SIG)`函数:处理子进程结束的信号(SIGCHLD),用于在后台进程结束后清理资源。 【实验测试】 实验报告详细描述了测试过程,包括测试方法、结果评价和自测试。测试用例(trace01.txt至trace04.txt)旨在验证TinyShell的功能完整性,如正确解析命令、执行内置命令、后台进程管理和信号处理等。通过对比预期输出和实际运行结果,评估TinyShell的正确性和稳定性。 总结来说,这个实验涵盖了操作系统中的核心概念,如进程管理和信号处理,并通过实现一个简单的Shell来加深理解。这种实践性学习有助于学生掌握计算机系统底层运作原理,为后续深入学习操作系统和其他系统编程课程打下坚实基础。
剩余30页未读,继续阅读
- 粉丝: 34
- 资源: 325
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0