- 1、本文档共27页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验小组《OS操作系统实验一》----Shell解释程序实现文档
《OS操作系统实验一》:
Shell解释程序(YSH0)实现文档OS实验小组
2005年6月12日星期日 王 克(组长) 杜可斌 徐 瑞 张 劲
目录:
1 概述 2
2 YSH0功能与设计 2
2.1 程序形式 2
2.2 内部命令和外部命令 2
2.3 重定向和管道命令 2
2.4 特殊命令键 3
2.5 程序结构图 3
3 命令行分析器设计 4
3.1 功能 4
3.2 实现 5
4 命令解释执行的实现 6
4.1 使用到的系统调用 6
4.2 程序结构 6
5 程序源代码相关说明 7
5.1 文件说明 7
5.2 主要函数说明 7
5.3 主要数据结构说明 7
6 简易测试 8
6.1 编译运行测试 8
6.2 内部命令测试 9
6.3 外部命令测试 9
6.4 重定向和管道命令测试 10
6.5 测试总结 10
7 总结及感想 10
7.1 王克 10
7.2 杜可斌 11
7.3 张劲 11
7.4 徐瑞 11
8 附录 11
8.1 参考资料 11
8.2 源代码 11
概述
由于时间和能力的限制,这个的实验是参考实验教程上源代码及相关说明,但程序源代码的差异性在60%以上,从整体结构设计到具体的实现细节都有不同程度的改进和提高,但也可能带来一些BUG。
通过对操作系统课程的学习,我们对Linux有了进一步更深入的认识,从它的使用到内核编译都有所了解。
第一个实验是实现在Linux下实现一个Shell解释程序,所以我们将其命名为Linux Shell 0(表示一个最简单的Shell程序)。它是用户与系统内核沟通的中介,为用户使用操作系统的服务提供一个命令界面。用户在提示符下输入一个命令,Shell先解释后通过内核函数调用执行。
YSH0功能与设计
程序形式
用户运行本程序,lsh0提供一个命令提示符[lsh0#],程序一直等待用户输入命令,直到exit命令结束。
内部命令和外部命令
解释器首先支持一定的内部命令,实现特定的动作,它包括:
exit: 结束所有子程序并退出。
jobs:打印当前正在后台运行的作业和挂起的作业信息。本SHELL采用十分便于用户理解的格式。
fg %int:把进程标识符为<int>的作业放到前台运行。如果这个作业已经暂停,就让它继续开始运行。并开始等待此前台进程执行完毕。
bg %int:在后台执行进程标识符为<int>的已经挂起的进程。
外部命令的形式是一系列分隔的字符串。第一个字符串为可执行程序的程序名,其余的参数。它必将位于环境变量所设置的某个路径中,如果不存在则表示命令错误。
重定向和管道命令
SHELL的命令大部分都是从标准输入信息并将输出信息送到标准输出。分别缩写为stdin和stdout。默认情况下,stdin为键盘,stdout为屏幕。但可使用>和<将输入和输出重定向到文件中,>将信息存入一文件以便保存,而不送到屏幕。使用<将信息从文件中输入。并且两者可以组合使用。
SHELL也提供管道,利用管道可以将一个命令的输出作为另一个命令的输入来使用。这种方法比使用临时文件来连接两个命令要方便和高效的多。
特殊命令键
Ctrl + Z:产生SIGTSTP信号,这个信号是让SHELL挂起在前台运行的作业。如果没有任何前台作业,则无效。
Ctrl + C:产生SIGNT信号,这个信号是让SHELL杀死前台运行的作业的进程。如果没有任何前台作业,则无效。
程序结构图
命令行分析器设计
功能
为Shell程序提供命令行的分析,并对信息进行分析存储,为解释执行做好准备。当用户在提示符后面输入命令时,输入的整行内容为一个“命令行字符串”。lsh0分析器的先将保存起来,直到它的作业执行结束。
在执行一个命令行字符串时,lsh0也同时为其分配一个非负整数标识符,用来标识此作业的数据结构。当其作业执行完毕时,就删掉这个作业的整个数据结构。
实现
命令解释执行的实现
使用到的系统调用
pid_t for(void);
int execv(const *file, char *const argv[]);
void exit(int status);
int wait(int *stat_loc);
pid_t waitpid(pid_t pid; int *stat_loc, int options);
int dup2(int fildes, int fides2);
int pipe(int fides[2]); (详见教程上,不再赘述了)
程序结构
程序源代码相关说明
文件说明
文件名 说
您可能关注的文档
- CN201310489476.1-用于电子元器件一体成型技术的环氧胶黏剂及其制备方法.pdf
- CN201310490948.5-一种降血压海参口服液的制造方法.pdf
- CN201310490941.3-一种增强免疫力的海参口服液的制造方法.pdf
- CN201310490956.X-一种补血润燥的海参胶囊的制造方法.pdf
- CN201310490959.3-一种固本培元的海参胶囊的制造方法.pdf
- CN201310490963.X-一种海参营养胶囊的制造方法.pdf
- CN201310490969.7-一种海参胶囊的制造方法.pdf
- CN201310490961.0-一种滋阴健阳的海参胶囊的制造方法.pdf
- CN201310490951.7-一种降血糖海参口服液的制造方法.pdf
- CN201310491362.0-一种增加伤口愈合速度的海参咀嚼片的制造方法.pdf
最近下载
- 2024年银行考试-授信业务资格笔试参考题库含答案.docx
- 2023-2024学年重庆市高二上册数学期末试卷1(人教版).docx VIP
- 园林景观施工技术交底记录大全.docx
- 期末周末作业题(含解析)2024-2025学年人教新目标(Go for it)版英语八年级上册.docx VIP
- 2024山西省农商银行招聘1340人笔试模拟试题及答案解析.docx
- 人教版2024-2025学年度第一学期七年级期末数学试卷.docx
- 可信数据空间建设及应用参考指南1.0.docx
- 2024江苏高考政治真题(原卷版).docx
- 三年级数学上册专项练习(拔高题)北师大版.pdf
- Rhino5.0&KeyShot产品设计实例教程(第2版).ppt VIP
文档评论(0)