SHANGHAIUNIVERSITY计算机操作系统实验报告(实验四、五、六)学院计算机工程与科学学院专业计算机科学与技术学号06122565姓名金玉倩教师吴绍春日期2010-2《计算机操作系统》实验报告实验四题目:Linux文件系统实验姓名:金玉倩学号:06122565实验日期:2009.1实验目的: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#includesys/stat.h#includesys/types.h#includesys/sysmacros.h#includestdio.h#includetime.h#includeunistd.h#includestring.h#includeerrno.h#defineTIME_STRING_LEN50char*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;iargc;i++){ret=ShowFileInfo(argv[i]);if(argc-i1)printf(\n);}returnret;}//p4.c#includestdio.hexternintetext,edata,end;main(){printf(etext:%6x\tedata:%6x\tend:%6\n,&etext,&edata,&end);}//p5.c#includestdio.h#includestring.h#includesys/types.h#includestdlib.h#includeunistd.h#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(;i1;++i)showit(cptr);}voidshowit(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#includesys/types.h#includestdio.hintmain(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文件系统实验姓名:金玉倩学号:06122565实验日期:2009.1实验目的:1、从系统分析的角度出发,了解FAT文件系统的组织结构和文件的存储方式。2、进一步理解操作系统文件管理的基本思想。实验内容:1..进入DEBUG环境,装入FAT文件系统结构。执行命令:L000212.观察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逻辑扇区。执行:L00021D2600察看内容执行:L80000218②找到文件123.TXT的存储位置。调出文件的第二快将文件的第512字节开始的128个字节,改写成“HappyNewYear!”。再写回原文件。并用常规方式打开文件察看效果。操作步骤:L00021D2600L80000228D8000D8200F8200“HappynewYear!”W80000228总结:①FAT文件系统的结构是如何组织的?答:经过格式化操作之后,系统将在软磁盘上建立以下的数据结构:(1)引导记录(DBR):位于0面0道1扇区,说明磁盘结构信息。(2)文件分配表(FAT):用于记录磁盘空间的分配情况,指示硬盘数据信息存放的柱面及扇区的信息指针。其表项可以是以下四种表示方式之一:A.一个数字,代表指向另一个簇的指针。B.数字0,表示一个未使用的簇C.一个坏扇区标记D.文件结束标记符EOF(3)文件根目录表FDT:一个指示以存入数据信息的索引。记录磁盘上