当前位置:文档之家› 操作实验报告

操作实验报告

《Linux操作系统》实验日志班级:姓名:学号:指导老师:实验一:Linux常用命令实验日志指导教师刘锐实验时间:2009 年10 月13 日学院计算机科学与技术学院专业信息安全班级学号姓名实验室S308实验题目:Linux常用命令实验目的:●练习并掌握Linux的常用命令●使用命令方式对用户,用户组及文件使用进行管理●使用图形界面方式对用户,用户组及文件使用进行管理●编写一个简单的C语言程序,并在linux环境下调试并运行实验内容:1.在命令交互方式下完成添加一个用户AA和一个用户组AAteam,并在AA用户下建立一个名为test的文件,同时改变对该文件的访问权限。

2.在图形交互方式下添加一个用户BB和一个用户组BBteam,并建立一个名为test文件,同时设置它的访问权限。

3.用C语言编写一个最简单的hello world程序实验主要步骤:1.练习Linux初学者需要掌握的常用50条命令2.helloworld程序用vi或vim编辑器先编写源代码取名为hello.c1)退出源文件编辑状态到命令行模式,2)在命令行模式下输入gcc –o hello hello.c,其中hello是经编译过后生成的可执行文件3)用chmod命令修改hello文件的权限4)在命令行模式下输入./hello实验结果:心得体会:第一次实验课,我们开始接触Linux操作系统,很生疏和平时用的基本不一样。

更别说命令方式了。

这次实验用户组及文件使用进行管理,使用图形界面方式对用户,用户组及文件使用进行管理编写一个简单的C语言程序,并在linux环境下调试并运行。

通过这次试验,我们学习和实践了一些基本命令.这些命令对于linux来说是必须的。

-o选项表示我们要求输出的可执行文件名. -c表示只要求编译器输出目标代码,而不必要输出可执行文件. -g 表示要求编译器在编译的时候提供以后对程序进行调试的信息。

对于编辑和修改程序我们需要应该运用VI编辑器来修改,而VI编辑器给我们提供了关键字的颜色等等,这使我们能更便捷的找到错误。

我想这次实验告诉我如果对于一个陌生的操作系统,不仅要了解其基本理论,对于常用的基本操作也要了解。

实验二:shell编程实验日志指导教师刘锐实验时间:2009 年10 月20 日学院计算机科学与技术学院专业信息安全班级学号姓名实验室S308实验题目:shell编程实验目的:了解shell编程的特点,掌握shell程序设计的基础知识实验内容:1.在Linux环境下,编写一段shell程序,实现文件的备份和恢复。

2.windows下的用户喜欢在windows下编写shell脚本,程序编写好后需要用U盘拷贝到Linux环境中去运行。

我们来编写一个shell程序,使用一个菜单界面,方便Linux用户对U盘的加载,卸载操作。

程序应该实现一下5歌功能:1)加载U盘2)卸载U盘3)查看加载后的U盘的信息4)从Linux分区的硬盘中拷贝文件到U盘中5)从U盘中拷贝文件到Linux分区的硬盘指定位置上。

心得体会:在第二次实验课上,又是一个陌生的东西——shell编程,必须掌握shell程序设计的基础知识。

这次实验的主要目的是尝试在Linux上使用U盘并且通过U盘安装软件。

听起来很简单就是安装一个软件,复制粘贴,最后安装就可以了。

但是在Linux上就变得有点复杂了,老师先教我们挂载U盘,通过一些列的操作终于成功了。

挂载成功以后U盘信息出现了,发现不对劲。

老师才解释说中文显示不出来。

不使用必须解除挂载。

在linux中安装软件确实不比windows简单。

这次实验让我更进一步的了解到了linux的一些特别性能。

实验三:Linux下的C语言编程实验日志指导教师刘锐实验时间:2009 年10 月27 日学院计算机科学与技术学院专业信息安全班级学号姓名实验室S308实验题目:Linux下的C语言编程实验目的:学习使用UNIX环境下C编程实验内容:1.fork 系统调用fork系统调用是UNIX操作系统创建新进程的唯一方法,我们称新创建的进程为子进程,而调用fork的进程称为父进程。

子进程有唯一的进程号来标识。

子进程的用户级环境是父进程用户级的一个拷贝。

其调用格式是:int fork()参数和功能说明:fork系统调用没有参数。

如果执行成功,则创建一子进程,子进程继承父进程的某些属性。

当从该系统调用返回时,系统中已有两个用户级环境完全相同的进程存在。

这两个进程从fork 调用中得到的返回值不同,其中子进程得到返回值为零,父进程得到的返回值为新创建的子进程的进程标识号。

fork系统调用非常特殊,用户有时很难理解,因为子进程好象是从天而降,在程序的中间突然开始执行。

下面以实例来说明fork的使用。

[例]该进程说明fork系统调用执行后,生成的子进程从程序中间开始执行,此外还将说明父子进程不同的返回值。

程序如下:main(){int pid;printf(“Start of fork testing\n”);pid=fork();printf(“Return of fork success:pid=%d\n”,pid);}运行结果如下:Start of fork testingReturm of fork success:pid=()Return of fork success:pid=3903该程序首先输出了一行信息,然后创建一个进程,当子进程成功创建后,子进程为就绪状态。

当父、子进程都从fork系统调用返回时,父、子进程都有可能被调用。

如果子进程先被调用,则运行结果与上述相同;如果父进程先被调用,则运行结果与上述就有些不同(自己观察比较)。

另外,子进程继承了父进程的执行环境,即父进程中变量、fork语句后面的代码等。

因此它输出了“R eturn of fork success:pid=0”。

假设如果子进程先被调用,子进程执行完毕后,父进程被调用就输出了“Return of fork success:pid=3903”(这时fork的返回值就是子进程的标识号)。

这就是为什么这条语句被执行了两次的原因。

从fork系统调用的返回值上可以区别哪个进程在执行。

例子中没有考虑到fork调用失败时的情况,如果严格编写,程序的模型应该是:if(pid=fork())= =0{fork成功,子进程执行的程序段}else if(pid= =-1){fork失败,父进程中的出错处理程序段}else{fork成功,父进程执行的程序段}2.exec系统调用fork系统调用只是将父进程的环境拷贝到子进程中,而没有用子进程来初始化创建的子进程,因此它并不能执行以新的目标程序,而这一点又是程序设计所必须的。

为此UNIX系统提供了通过exec系统调用,以便用指定目标程序更换进程的执行图象。

系统中的绝大多数命令都是通过exec来执行的。

不但shell进程所创建的子进程使用它来执行用户命令,shell进程本身和它的祖先进程也是用exec来启动执行的。

exec系统调用有多种不同的使用格式,不同之处在于有不同的名字和参数。

这里只讲其中的一种。

其格式为:int execl(path,arg0,arg1,…,argn,(char*)0)char *path,*arg0,*arg2,…,*argn;参数和功能说明:参数path指出一个可执行的目标文件的路径名;参数file指出可执行目标的文件名;arg0作为约定,与path相同;参数arg1到argn分别是该目标文件执行时所带的命令行参数;最后一个参数(char*)0表示参数串结束。

exec调用在程序中使子进程能执行自己的代码。

下面用实例来说明:main(){printf(“==system execl testing ==\n”);execl(“/bin/date”,“/bin/date”,0);printf(“execl failure!\n”);}其中一个执行结果如下:===system execl testing===Sun Jan 17 22:50:44 CST 1999如果将execl所在行写成execl(“date”,”date”,0),则会有如下的执行结果:===system execl testing===execl failure!程序的第一、第三行输出了判断信息,当execl调用成功时,因不执行程序中的语句,使第三行语句无法输出,该信息只当execl调用失败时才能输出。

因此执行该程序获得上述两个不同的结果。

第二次execl调用失败的原因是execl调用的第一个参数必须是目标文件的完整路径名,而不能只用文件名。

心得体会:这次实验是在UNIX下C编程,本来在windows下C编程就还不怎么熟练,这次换操作平台了完全没头绪。

老师先教会了我们调用fork系统和exec系统调用。

Fork系统调用是UNIX操作系统创建新进程的唯一方法,在新创建的进程为子进程,而调用fork的进程称为父进程。

通过exec系统调用讲父进程拷贝到子进程中,子进程不初始化创建的子进程是程序设计必须的。

经过这次实验,我发现对于操作系统的知识不能只限于书本,很多东西必须自己去学习。

实验五:Linux的内核编程实验日志指导教师刘锐实验时间:2009 年11 月10 日学院计算机科学与技术学院专业信息安全班级学号姓名实验室S308实验题目:Linux的内核编程心得体会:Linux内核编写,基本完全不懂,看看私房菜也只学了一点皮毛,最多就是熟悉地掌握Linux的常用命令。

如果没人帮助做个东西出来可能不会成功。

内核就是整个操作系统的核心,管理着全部驱动和各工具的提供等等。

实验八:Linux内存管理实验日志指导教师刘锐实验时间:2009 年1 月17 日学院计算机科学与技术学院专业信息安全班级学号姓名实验室S308实验题目:Linux内存管理实验目的:存储管理的主要功能之一是合理地分配空间。

请求页式管理是一种常用的虚拟存储管理技术。

本实验的目的是通过请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的技术特点,掌握请求页式存储管理的页面置换算法。

实验内容:计算并输出下述各种算法在不同内存容量下的命中率①先进先出的算法(FIFO);②最近最少使用算法(LRR);③最佳淘汰算法(OPT)先淘汰最不常用的页地址;④最少访问页面算法(LFR);⑤最近最不经常使用算法(NUR)。

其中③和④为选择内容。

命中率=1-页面失效次数/页地址流长度在本实验中,页地址流长度为320,页面失效次数为每次访问相应指令时,该指令所对应的页不在内存的次数。

实验主要步骤:<程序设计〉本实验的程序设计基本上按照实验内容进行。

即首先用srand()和rand()函数定义和产生指令序列,然后将指令序列变换成相应的页地址流,并针对不同的算法计算出相应的命中率。

相关主题