计算机操作系统实验报告.docx
- 文档编号:3828776
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:17
- 大小:913.60KB
计算机操作系统实验报告.docx
《计算机操作系统实验报告.docx》由会员分享,可在线阅读,更多相关《计算机操作系统实验报告.docx(17页珍藏版)》请在冰豆网上搜索。
计算机操作系统实验报告
计算机操作系统实验报告
学院计算机工程与科学学院
专业计算机科学与技术
学号
姓名
教师
日期
《计算机操作系统》实验报告
实验四题目:
Linux文件系统实验
实验目的:
1.掌握操作系统中文件分类的概念。
2.了解Linux文件系统管理文件的基本方式和特点。
3.学会使用Linux文件系统的命令界面和程序界面的基本要领。
实验内容:
1.用shell命令查看Linux文件类型。
Linux的文件类型包括:
普通文件(—)、目录文件(d)、字符设备文件(c)、块设备文件(b)硬链接文件、套接口文件(s)、符号链接文件(l)和管道文件(p)。
2.用shell命令了解Linux文件系统的目录结构。
3.用命令分别建立硬链接文件和符号链接文件。
通过ls-il命令所示的inode、链接计数观察他们的区别。
◆思考题:
建立硬链接文件和建立符号链接文件有什么区别?
答:
硬连接指通过索引节点来进行的连接。
在Linux中,多个文件名指向同一索引节点是存在的。
一般这种连接就是硬连接。
硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。
其原因如上所述,因为对应该目录的索引节点有一个以上的连接。
只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。
也就是说,文件才会被真正删除。
与硬连接相对应的另一种连接,称为符号连接(软连接)。
软链接文件有点类似于Windows的快捷方式。
它实际上是特殊文件的一种。
在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
如上图实验所示:
touchf1(创建一个f1的文件)
lnf1f2创佳一个f2的硬连接
ln-sf1f3创建一个f3的软连接
此时如果删除f3,对f1、f2无影响;如果删除f2,对f1、f3也无影响,如果删除f1,那么因为f2也应用f1,所以并不影响f2节点的,cat创建的文件仍然存在;但是此时f3因为是软连接,导致f3失效。
如果删除f1、f2,那么cat创建的文件会被删除。
4.复习Unix或Linux操作系统文件目录信息i节点的概念。
编程观察看指定文件的inode信息。
将书上例程8的内容输入p3.c后,编译执行。
5.再来一个更有趣的实验。
修改父进程创建子进程的程序,用显示程序段、数据段地址的方法,说明子进程继承父进程的所有资源。
再用父进程创建子进程,子进程调用其它程序的方法进一步证明执行其它程序时,程序段发生的变化。
将书上例程10显示程序、数据段地址的程序的内容输入p4.c、p5.c后,编译执行。
6.编写一个涉及流文件的程序。
要求:
A.以只读方式打开一个源文本文件
B.以只读方式打开另一个源文本文件
C.以只读方式打开目标文本文件
D.将两个源文件内容复制到目标文件
E.将目标文件改为指定的属性
F.显示目标文件
将书上例程11的内容输入p6.c后,编译执行。
体会:
也许这学期的三个实验中就这个最难了。
不仅有书上的概念,书上讲的不清楚的,还得自己从网上搜集资料。
对于Linux中文件的软硬链接理解得算是透彻了,对于i节点的理解也更深入了一步,Unix系统的内核结构真的是非常方便实用,基于它衍生的许多技术都将是我未来关注学习的焦点。
附录:
(源程序)
//p3.c
#include
#include
#include
#include
#include
#include
#include
#include
#defineTIME_STRING_LEN50
char*time2String(time_ttm,char*buf)
{structtm*local;
local=localtime(&tm);
strftime(buf,TIME_STRING_LEN,"%c",local);
returnbuf;
}
intShowFileInfo(char*file)
{structstatbuf;
chartimeBuf[TIME_STRING_LEN];
if(lstat(file,&buf))
{perror("lstat()error");
return1;
}
printf("\nFile:
%s\n",file);
printf("1)Ondevice(major/minor):
%d%d,inodenumber:
%ld\n",
major(buf.st_dev),minor(buf.st_dev),buf.st_ino);
printf("2)Type:
%07o\tPermission:
%05o\n",
buf.st_mode&S_IFMT,buf.st_mode&~(S_IFMT));
printf("3)Overid:
%d\tGroupid:
%d\t\n4)Numberofhardlinks:
%d\n",
buf.st_uid,buf.st_gid,buf.st_nlink);
printf("5)Size:
%ld\t\n6)Lastaccess:
%s",buf.st_size,time2String(buf.st_atime,timeBuf));
printf("\nLastmodifyinode:
%s\n\n",time2String(buf.st_atime,timeBuf));
printf("7)Datablocks:
%d,%d\t\n",buf.st_blksize,buf.st_blocks);
return0;
}
intmain(intargc,char*argv[])
{inti,ret;
for(i=1;i {ret=ShowFileInfo(argv[i]); if(argc-i>1)printf("\n"); } returnret; } //p4.c #include externintetext,edata,end; main() { printf("etext: %6x\tedata: %6x\tend: %6\n",&etext,&edata,&end); } //p5.c #include #include #include #include #include #defineSHW_ADR(ID,I)printf("Theid%s\tisatadr: %8x\n",ID,&I); externintetext,edata,end; char*cptr="HelloWorld.\n"; charbuffer1[25]; main() {voidshowit(char*); inti=0; printf("Adretext: %8x\tAdredata: %8xAdrend: %8x\n\n",&etext,&edata,&end); SHW_ADR("main",main); SHW_ADR("showit",showit); SHW_ADR("cptr",cptr); SHW_ADR("buffer1",buffer1); SHW_ADR("i",i); strcpy(buffer1,"Ademonstration\n"); write(1,buffer1,strlen(buffer1)+1); for(;i<1;++i) showit(cptr); } void showit(char*p) {char*buffer2; SHW_ADR("buffer2",buffer2); if((buffer2=(char*)malloc((unsigned)(strlen(p)+1)))! =NULL) {strcpy(buffer2,p); printf("%s",buffer2); free(buffer2); } else {printf("Allocationerror.\n"); exit (1); } } //p6.c #include #include intmain(intargc,char*argv[]) {chars[1024]; FILE*fp; if((fp=fopen(argv[1],"r"))! =(FILE*)0) {while((fgets(s,1024,fp))! =(char*)0) puts(s); } else {fprintf(stderr,"fileopenerror.\n"); exit (1); } exit(0); } 实验五题目: FAT文件系统实验 实验目的: 1、从系统分析的角度出发,了解FAT文件系统的组织结构和文件的存储方式。 2、进一步理解操作系统文件管理的基本思想。 实验内容: 1..进入DEBUG环境,装入FAT文件系统结构。 执行命令: L00021 2.观察1.44M软盘中FAT12文件系统结构。 执行命令: D0000 软盘有两面,每面80个磁道,每个磁道18个扇区,每个扇区512个字节,所以软盘的容量是2*80*18*512=1474560,1474560/1024/1024大约为1.44M。 3.分析文件分配表结构,了解用簇链映射的文件的链式存储结构。 执行命令: D200 ◆思考: 上面屏幕显示首簇号为003的文件共包括几个扇区? 它分布在哪几个物理扇区上? 答: 首簇号为003的文件共包括2个扇区,它分布在0道0面2、3扇。 4.观察1.44M软盘中文件目录表FDT以及文件目录结构 执行命令: L00021 说明: 将逻辑扇区0H开始的共21H个物理扇区装入DS: 0000H起始的内存。 执行命令: D2600 说明: 显示从2600H地址开始的FDT文件表。 思考: ①计算1.44M的软盘根目录最多可以容纳多少文件? 答: 1.44MB软盘的文件目录表FDT共14个扇区,每个文件的目录登记项占用32个字节,用作目录的一个扇区(512字节)最多只能装入512/32=16个文件。 因此,1.44MB软盘的根目录下最多可建文件或子目录224个。 ②上图屏幕显示的文件BAK.txt的目录项中标示该文件的首簇号在何处? 该文件是什么属性? 答: 首簇号在第2行的1A~1B字节处,首簇号为002,该文件属于归档文件。 书上显示的文件office.txt首簇号在第6行的1A~1B字节处,首簇号为091,属归档文件。 ③书上面的屏幕显示第1~2行目录项表示的是什么项目? 答: 第1~2目录项表示卷标。 5.观察1.44M软盘中文件目录表的长文件名目录结构 思考: ①书上面屏幕显示的2~3行是什么目录项? 答: 长名的第一项,也是最后一项。 ②若有一个文件名共长34个字符,要占多少目录项? 答: 四个目录项,三个长目录项和一个短目录项。 6.自己动手做: ①观察测试软盘的FDT区,找到名为BAK的文件目录。 该文件是什么类型的文件? 文件放在磁盘的哪个位置? 占用几个存储单位? 调出其内容看看。 该文件为BAK.txt,属于归档文件。 察看其首簇号为002,对应了数据区21H逻辑扇区。 执行: L00021 D2600 察看内容执行: L80000218 ②找到文件123.TXT的存储位置。 调出文件的第二快将文件的第512字节开始的128个字节,改写成“HappyNewYear! ”。 再写回原文件。 并用常规方式打开文件察看效果。 操作步骤: L00021 D2600 L80000228 D8000 D8200 F8200“HappynewYear! ” W80000228 总结: ①FAT文件系统的结构是如何组织的? 答: 经过格式化操作之后,系统将在软磁盘上建立以下的数据结构: (1)引导记录(DBR): 位于0面0道1扇区,说明磁盘结构信息。 (2)文件分配表(FAT): 用于记录磁盘空间的分配情况,指示硬盘数据信息存放的柱面及扇区的信息指针。 其表项可以是以下四种表示方式之一: A.一个数字,代表指向另一个簇的指针。 B.数字0,表示一个未使用的簇 C.一个坏扇区标记 D.文件结束标记符EOF (3)文件根目录表FDT: 一个指示以存入数据信息的索引。 记录磁盘上存储文 件的大小,位置,日期和时间等数据。 (4)数据区: 存放数据信息。 ②系统怎样实现文件的逻辑块到物理块的映射? 答: 文件分配表(FAT)是在链表结构的基础上,把每一个物理块当中的链表指针抽取出来,单独组成一个表格,也就是,并把它存放在内存当中,然后,如果要随机地区访问文件的第n个逻辑块,可以先从FAT表中查到相应的物理块地址,之后根据这个地址直接去访问磁盘,这样速度就比较快。 文件分配表的具体实现是,在整个文件系统中设置一个一维的线性表格,它的表项个数就等于磁盘上物理块的个数,并按照物理块编号的顺序来建立索引。 对于系统中的每一个文件,在它的文件控制块中记录了这个文件的第一个物理块的编号X1,然后在FAT表的第X1项中,记录了该文件的第二个物理块编号X2.就这样一直下去,从而形成了一个链表。 在链表的最后一个节点中,存放了一个特殊的文件结束的标识。 下图所示是文件分配表的一个例子。 通过文件1的目录项可以知道,它的第一个逻辑块存放在第一个物理块中。 然后去查询FAT表,可以知道,它的第二、第三个逻辑块分别存放在第二、第三个物理块中。 FAT表的第三项是一个特殊的值0xFFFF,表明文件的结束,所以该文件总共有三个块。 类似的,文件2也有三个数据块,分别存放在第四、第五和第七个物理块中。 体会: 这个实验很好的结合了书上对于FAT文件系统结构的阐述。 对FAT的组织结构和文件的存储方式,有了更实际的认识。 这个实验是在同学帮助下完成的,对于1.44M软盘不是很熟悉,不过硬盘的道理应该差不多,对于操作系统这门课有很实际的意义。 实验六题目: 内存分配和设备管理实验 实验目的: 了解Linux管理设备的基本方式。 实验内容: 1.用ls杔命令观察设备文件的组织方式。 执行: $ls杔/dev ◆思考: Linux管理设备的方法与管理文件的方式有何异同? 为什么用管文件的方式来管设备? 有什么好处? 答: 管理设备和管理文件的相同之处在于都是文件系统来管理。 不同的是管理设备还需要设备控制器、设备与控制器之间的接口、缓冲管理等。 管文件的方式来管设备可以使设备的输入输出有完全相同的接口,使操作和应用程序开发都很方便。 2.参考例程12编程,显示设备文件的设备号信息。 例程12执行结果如下: 体会: 这学期的实验总的来说比上学期有意思得多。 不再是抽象的而是更逻辑且实际的。 不过也更让我认识到,操作系统这门课还有很多精华之处,还有待我们去学习,课堂上的讲解实在只是它的皮毛。 我对操作系统的兴趣日益增大,这成为了我深入探索的无限动力。 附录: (源程序) //p7.c #include #include #include #include #include #include #include #include intmain(intargc,char*argv[]) {inti; structstatbuf; for(i=1;i {printf("%s",argv[i]); if(lstat(argv[i],&buf)<0) {error("lstaterror"); continue; } printf("dev=%d%d",major(buf.st_dev),minor(buf.st_dev)); if(S_ISCHR(buf.st_mode)||S_ISBLK(buf.st_mode)) {printf("(%s)rdev=%d%d",(S_ISCHR(buf.st_mode)),"character: block",ma jor(buf.st_rdev),minor(buf.st_rdev)); } printf("\n"); } exit(0); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 操作系统 实验 报告