武汉理工大学学生实验报告书实验课程名称操作系统开课学院计算机科学与技术学院指导老师姓名刘军学生姓名李安福学生专业班级软件sy12012014—2015学年第一学期学生学号0121210680225实验课成绩《操作系统》实验教学大纲课程编号:课程名称:操作系统/OperatingSystem实验总学时数:12学时适应专业:计算机科学与技术、软件工程承担实验室:计算机科学与技术学院实验中心一、实验教学的目的和任务通过实验掌握Linux系统下常用键盘命令、系统调用、SHELL编程、后台批处理和C程序开发调试手段等基本用法。二、实验项目及学时分配序号实验项目名称实验学时实验类型开出要求01Linux键盘命令和vi2设计必开02Linux下C编程2设计必开03SHELL编程和后台批处理2设计必开04Linux系统调用(time)2设计必开05Linux进程控制(fork)4设计必开三、每项实验的内容和要求:1、Linux键盘命令和vi要求:掌握Linux系统键盘命令的使用方法。内容:见教材p4,p9,p40,p49-53,p89,p1002、Linux下的C编程要求:掌握vi编辑器的使用方法;掌握Linux下C程序的源程序编辑方法;编译、连接和运行方法。内容:设计、编辑、编译、连接以及运行一个C程序,其中包含键盘输入和屏幕输出语句。3、SHELL编程和后台批处理要求:掌握Linux系统的SHELL编程方法和后台批处理方法。内容:(1)将编译、连接以及运行上述C程序各步骤用SHELL程序批处理完成,前台运行。(2)将上面SHELLL程序后台运行。观察原C程序运行时输入输出情况。(3)修改调试上面SHELL程序和C程序,使得在后台批处理方式下,原键盘输入内容可以键盘命令行位置参数方式交互式输入替代原键盘输入内容,然后输出到屏幕。4、Linux系统调用使用方法。要求:掌握Linux系统调用使用方法。内容:学习使用time,ctime,sleep,exit等Linux系统调用使用方法。5、Linux系统进程控制要求:掌握Linux系统中进程控制原语fork的使用方法。内容:设计C程序,其中主进程创建一个子进程,以特定次序各自执行规定操作后退出。以上每项实验均要求每人一个Linux联机终端独立完成。四、实验改革与特色完成多用户分时系统Linux下的基本使用级观察级实验。五、教材及实验指导书教材:孟静,《操作系统教程题解与实验指导》,高等教育出版社2002.6执笔:杨铭熙审阅:陈天煌日期2014年12月6审定:徐东平日期2014年12月6实验课程名称:操作系统实验项目名称Linux键盘命令和vi实验成绩实验者李安福专业班级软件sy1201组别同组者实验日期第一部分:实验分析与设计(可加页)一、实验内容描述(问题域描述)Linux键盘命令和vi要求:掌握Linux系统键盘命令的使用方法。二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)进入vi的命令:vifilename:打开或新建文件,并将光标置于第一行首vi+nfilename:打开文件,并将光标置于第n行首vi+filename:打开文件,并将光标置于最后一行首vi+/patternfilename:打开文件,并将光标置于第一个与pattern匹配的串处vi-rfilename:在上次正用vi编辑时发生系统崩溃,恢复filenamevifilename....filename:打开多个文件,依次进行编辑键盘命令:1.cat命令、more命令、less命令:cat命令是将单个或多个文件的内容显示到屏幕上;more命令和less命令与cat命令相似,以分页形式显示文件内容。2.ls命令:将某一个目录或文件的内容显示出来3.cp命令:文件或目录的复制4.rm命令:删除文件或目录5.mv命令:将文件从一个位置移动到另一个位置6.mkdir命令:创建目录7.rmdir:删除空目录三、主要仪器设备及耗材安装Linux系统的计算机一台。第二部分:实验调试与结果分析(可加页)一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)1使用mkdir命令建立一个子目录subdir2使用cat或more命令查看file1文件的内容。3将date命令的用法附加到文件file1的后面:4利用ls-lfile1命令列出文件file1的较详细的信息。5利用rmfa命令将文件fa删除。再利用ls-l命令查看工作目录内容。6运行mvfile1file_a命令,然后用ls命令查看这两个文件是否都还在工作目录中?显然,只有file_a在工作目录中,而file1不在工作目录中vi共分为三种模式(1)命令模式:命令模式为vi的初始模式,可以使用“上下左右”按键来移动光标,您可以使用“删除字符”或“删除整行”来处理文档。在编辑模式或指令列模式中按【ESC】键可换回命令模式。(2)编辑模式:在命令模式中按下【i,I,o,O,a,A,r,R】等字母之后才会进入编辑模式。按下上述的字母时,在画面的左下方会出现【--INSERT--或--插入--】的字样,才可以做文字数据输入。(3)指令列模式:在命令模式当中,输入【:】或【/】就可以将光标移动到最底下那一行,进入指令列模式。在这个模式当中,可以存盘、结束vi、显示行号等操作。二、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)Free显示系统中已用空闲内存数量top:查看系统进程情况三、实验小结、建议及体会vi编辑器是Linux系统下标准的编辑器,它的强大不逊色于任何文本编辑器。初次实验对Linux常用命令及编辑器的使用操作都不熟悉,但对Linux很好奇。通过实验,学会了如何在现有操作系统的基础上再打开一个操作系统,并对新的窗口进行操作。开始进入的界面有点像DOS环境下的界面,接着可以输入一些语句命令来创建和查看文件、查看根目录及根目录下的内容,以及如何进入文件夹、如何编译并推出编译等。学会vi有助于我们学习Linux。实验课程名称:操作系统实验项目名称Linux下C编程实验成绩实验者李安福专业班级软件sy1201组别同组者实验日期第一部分:实验分析与设计(可加页)一、实验内容描述(问题域描述)Linux下的C编程要求:掌握vi编辑器的使用方法;掌握Linux下C程序的源程序编辑方法;编译、连接和运行方法。内容:设计、编辑、编译、连接以及运行一个C程序,其中包含键盘输入和屏幕输出语句。二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)#includestdio.hintmain(){inta,b;printf(shurulianggeshu:\n);scanf(%d,%d,&a,&b);if(ab){b=a;}printf(max=%d\n,b);return0;}三、主要仪器设备及耗材Linux操作系统Vi编辑器gcc编译第二部分:实验调试与结果分析(可加页)一、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)二、实验小结、建议及体会通过这次实验vi编辑器有了进一步的应用,同时学会了在Linux进行简单的C语言编程,掌握Linux下C程序的源程序编辑方法;编译、连接和运行方法。加深了对linux的印象,linux的兼容性很强。C/C++仍旧可以在上面编译成功。在以后的学习中会加大努力加强自己的编程能力。实验课程名称:操作系统实验项目名称SHELL编程和后台批处理实验成绩实验者李安福专业班级软件sy1201组别同组者实验日期第一部分:实验分析与设计(可加页)三、实验内容描述(问题域描述)SHELL编程和后台批处理要求:掌握Linux系统的SHELL编程方法和后台批处理方法。内容:(1)将编译、连接以及运行上述C程序各步骤用SHELL程序批处理完成,前台运行。(2)将上面SHELLL程序后台运行。观察原C程序运行时输入输出情况。(3)修改调试上面SHELL程序和C程序,使得在后台批处理方式下,原键盘输入内容可以键盘命令行位置参数方式交互式输入替代原键盘输入内容,然后输出到屏幕。四、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)C程序文件如下#includestdio.hintmain(){inta,b;printf(shurulianggeshu:\n);scanf(%d,%d,&a,&b);if(ab){b=a;}printf(max=%d\n,b);return0;}test.sh文件如下#!/bin/bashgcc-otchmodu+xtest.out./test.out三、主要仪器设备及耗材linux操作系统Vi编辑器GccBash第二部分:实验调试与结果分析(可加页)四、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)调试过程中未发现任何问题五、实验结果及分析(包括结果描述、实验现象分析、影响因素讨论、综合分析和结论等)六、实验小结、建议及体会在实验中,我学习了Linux中的shell编程语法。其实在shell中可以实现许多用C语言或者其他语言编写的程序功能,并且用shell更加快捷,因为它无需编译,是解释性语言。此次实验让我对Linux下的编程有了进一步的了解。实验课程名称:操作系统实验项目名称Linux系统调用(time)实验成绩实验者李安福专业班级软件sy1201组别同组者实验日期第一部分:实验分析与设计(可加页)一、实验内容描述(问题域描述)Linux系统调用使用方法。要求:掌握Linux系统调用使用方法。内容:学习使用time,ctime,sleep,exit等Linux系统调用使用方法。二、实验基本原理与设计(包括实验方案设计,实验手段的确定,试验步骤等,用硬件逻辑或者算法描述)#includestdio.h#includeunistd.h#includetime.h#includeiostreamusingnamespacestd;intmain(){while(1){chartimebuf[100];time_tt;time(&t);strftime(timebuf,sizeof(timebuf),%Y年%m月%d日%H:%M:%S,localtime(&t));couttimebufendl;fflush(stdout);sleep(1);}return0;}三、主要仪器设备及耗材Ubuntu操作系统Vi编辑器G++编译器第二部分:实验调试与结果分析(可加页)一、调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等)ctime(将时间和日期以字符串格式表示)表头文件#includetime.h定义函数char*ctime(consttime_t*timep);函数说明ctime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果以字符串形态返回。此函数已经由时区转换成当地时间,字符串格式为“WedJun3021:49:081993\n”。若再调用相关的时间日期函数,此字符串可能会被破坏。返回值返回一字符串表示目前当地的时间日期。time(取得目前的时间)表头文件#includetime.h定义函数time_ttime(time_t*t);函数说明此函数会返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数。如果t并非空指针的话,此函数也会将返回值存到t指针所指的内存。返回值成功则返回秒数,失败则返回((time_t)-1)值,错误原因存于errno中。sleep(让进程暂停执行一段时间)表头文件#includeunistd.h定义函数unsignedintsleep(unsignedintseconds);函数说明sleep()会令目前的进程暂停,直到达到参数secon