您好,欢迎访问三七文档
操作系统课程实验报告姓名叶磊学号1201010106系计算机1班任课教师指导教师评阅教师实验地点寝室。。。实验时间实验编号与实验名称:实验八:文件系统实验实验目的:熟悉文件和目录的基本操作;了解Linux的/proc文件系统。实验内容及要求(详见实验讲义):实验内容如下所示:1)在/usr目录下创建一个目录usr_test和文本文件test,并建立一个test文件的链接test02。通过修改test文件中的内容查看test和test02中内容的情况,并分析原因。2)编写程序,从/proc文件中抽取内核参数(任意的2个参数即可,如CPU时钟速度信息等)。3)实现文件的拷贝,即把一个文件内容复制到另一个文件。实验要求如下所示:对于内容1),给出操作步骤和结果分析,需回顾第二次实验中练习过的Shell命令和教材中的文件和目录操作系统调用。对于内容2)和3)给出完整C语言代码或者代码截图和代码执行结果,可参考本文件“实验预读”中相关内容和教材P.149/266图4-5相关代码。实验用到的软件(:)OracleVMVirtualBox软件和linux系统。实验内容、关键步骤(流程图、代码等)及结果分析(70分)1)在/usr目录下创建一个目录usr_test和文本文件test,并建立一个test文件的链接test02。通过修改test文件中的内容查看test和test02中内容的情况,并分析原因。答:首先在linux下输入su-,如下所示:然后输入密码:123456回车后,进入系统根目录,并获得超级用户的权利,如下所示:然后输入ls查看目录后,发现没有user目录,如下所示:所以我给系统创建一个叫user的目录,如下所示:输入ls查看目录后,可以看到已经有user目录存在了,如下所示:然后我们进入到user下,输入cduser命令进入,如下所示:然后我们输入ls命令,发现user目录下,没有如何东西,如是我们创建一个叫user_test的目录,输入mkdiruser_test命令回车后,如下所示:然后输入ls后,可以看到/user下,有了一个叫user_test的目录,如下所示:然后打开user_test目录,输入cduser_test命令回车后,如下所示:输入ls查看后,也是没有任何文件存在,如下所示:接着是创建一个test.txt文件,输入vitest.txt命令回车后,接着在里面输入一些内容,如下所示:保存后,返回到user_test目录下,输入ls后,如下所示:然后建立一个test.txt文件的链接test02,输入linktest.txttest02回车后,如下所示:然后输入cattest.txt查看test.txt的文件内容,如下所示:然后再输入cattest02查看test02里面的如下,显示如下所示:然后打开test.txt文件改变里面的内容如下所示:然后输入cattest.txt查看test.txt里面的内容,显示如下所示:接着输入cattest02查看test02里面的内容,显示如下所示:由以上的实验可以知道,test02与test.txt显示的内容是一样的,当test.txt文件里的内容改变时,test02显示出来的内容跟test.txt里显示的内容是一样的。我个人认为其实test02就像是一个test.txt的快捷方式,它就是test.txt的一个索引,所以不管你怎么改变test.txt文件里的内容,test02显示的内容都跟test.txt显示的内容是一样的。2)编写程序,从/proc文件中抽取内核参数(任意的2个参数即可,如CPU时钟速度信息等)。答:我这里是从/proc文件中获取内核的内存参数,输入cat/proc/meminfo命令后,显示如下所示:然后我打算从中获取总内存的大小信息(MemTotal)和高速缓存的大小(Cached),对其进程编程,建立一个名叫meminfo.c文件,并进行添加相关的代码,如下所示:输入gccmeminfo.c回车后,再输入./a.out回车后,显示如下所示:以上的输出结果中,Cached的结果跟前面输入cat/proc/meminfo显示的不同,其实并没有错,这里的Cached是可变的,随着进程的运行,它显示的是高级缓存的利用后的大小,由于进程运行的时候会改变它,所以显示出来的数据会不大相同,不过已经很接近了;而MemTotal它的大小是固定的,所以它时候衡定不变的。不过运行完./a.out后,在运行cat/proc/meminfo时再对比,它们是相同的。因为运行完./a.out后没有运行其它进程,所以它的大小没有改变,如下所示:以上的显示结果,我们就可以知道MemTotal和Cached获取出来的数据都是对的,这个实验大概完成。3)实现文件的拷贝,即把一个文件内容复制到另一个文件。答:这这个实验中,首先在student下建一个名字叫test1.txt的文件,并在里面添加相关的内容,用于作为被拷贝的文件,如下所示:接着是创建一个copy.c文件,输入vicopy.c,并输入相关的代码后,实现文件的拷贝,我要实现的是把test.txt拷贝到test2.txt中,代码如下所示:然后保持退出后,我们可以输入ls查看一下目录,如下所示:可以看到student目录下没有test2.txt文件,不过没关系,我们可以直接运行代码,因为我在代码中写的是,如果test2.txt文件不存在时,会自动在student目录下自动创建一个,如果存在那么就会覆盖里面的内容;所以运行gcccopy.c命令后,再运行./a.out命令后,显示如下所示:然后输入ls查看student目录,看test2.txt是否已经存在了,输入命令后,显示如下所示:然后输入cattest1.txt查看test1.txt里面的内容,显示如下所示:接着我们查看test2.txt文件的内容,输入cattest2.txt回车后,显示如下所示:由以上的实验结果,我们可以看到拷贝文件成功,实验大概完成!以上就是实验的所有内容,实验大概的都实现了,还是比较简单的一次实验,实验大概完成!实验过程中遇到的问题解决办法与实验体会(10分)【请注意:此处必须如实填写,为空或不适均扣10分】总的来说,这次的实验还是比较简单的,实验大概完成,还是比较有收获的。在这次的实验中,让我知道了怎样去获取linux系统的内核信息,知道了怎样给一个文件建立一个链接;还知道了在编程时,怎样去写一个文件的路径。这次的实验我都是自己独立完成的,为了跟其他同学做的不同,我选择了获取meminfo里的内核信息,大概的要求都实现,感觉还是收获良多的。
本文标题:实验8文件系统
链接地址:https://www.777doc.com/doc-5103437 .html