SHANGHAI UNIVERSITY计算机操作系统实验报告(实验四、五、六)学院计算机工程与科学学院专业计算机科学与技术学号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的快捷方式。
它实际上是特殊文件的一种。
在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
如上图实验所示:touch f1(创建一个f1的文件)ln f1 f2 创佳一个f2的硬连接ln -s f1 f3 创建一个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<sys/stat.h>#include<sys/types.h>#include<sys/sysmacros.h>#include<stdio.h>#include<time.h>#include<unistd.h>#include<string.h>#include<errno.h>#define TIME_STRING_LEN 50char *time2String (time_t tm,char *buf){struct tm *local;local=localtime(&tm);strftime(buf,TIME_STRING_LEN,"%c",local);return buf;}int ShowFileInfo(char *file){struct stat buf;char timeBuf[TIME_STRING_LEN];if(lstat(file,&buf)){perror("lstat()error");return 1;}printf("\nFile:%s\n",file);printf("1)On device(major/minor):%d %d,inode number:%ld\n",major(buf.st_dev),minor(buf.st_dev),buf.st_ino);printf("2)Type:%07o\t Permission:%05o\n",buf.st_mode & S_IFMT,buf.st_mode & ~(S_IFMT));printf("3)Over id:%d\t Group id:%d\t \n4)Number of hard links:%d\n",buf.st_uid,buf.st_gid,buf.st_nlink);printf("5)Size:%ld\t \n6)Last access:%s",buf.st_size,time2String(buf.st_atime,timeBuf));printf("\n Last modify inode:%s\n\n",time2String(buf.st_atime,timeBuf));printf("7)Datablocks:%d , %d\t\n",buf.st_blksize,buf.st_blocks);return 0;}int main(int argc,char *argv[]){int i,ret;for(i=1;i<argc;i++){ret=ShowFileInfo(argv[i]);if(argc-i>1)printf("\n");}return ret;}//p4.c#include<stdio.h>extern int etext,edata,end;main(){printf("etext:%6x \t edata:%6x \t end:%6 \n",&etext,&edata,&end);}//p5.c#include<stdio.h>#include<string.h>#include<sys/types.h>#include<stdlib.h>#include<unistd.h>#define SHW_ADR(ID,I) printf("The id %s \t is at adr:%8x\n",ID,&I);extern int etext,edata,end;char *cptr="Hello World.\n";char buffer1[25];main(){ void showit(char *);int i=0;printf("Adr etext:%8x\t Adr edata:%8x Adr end:%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,"A demonstration\n");write(1,buffer1,strlen(buffer1)+1);for(;i<1;++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("Allocation error.\n");exit(1);}}//p6.c#include<sys/types.h>#include<stdio.h>int main(int argc,char *argv[]){ char s[1024];FILE *fp;if((fp=fopen(argv[1],"r"))!=(FILE*)0){ while((fgets(s,1024,fp))!=(char *)0)puts(s);}else{ fprintf(stderr,"file open error.\n");exit(1);}exit(0);}实验五题目:FAT 文件系统实验姓名:金玉倩学号:06122565 实验日期:2009.1实验目的:1、从系统分析的角度出发,了解FAT文件系统的组织结构和文件的存储方式。
2、进一步理解操作系统文件管理的基本思想。
实验内容:1..进入DEBUG环境,装入FAT文件系统结构。
执行命令:L 0 0 0 212.观察1.44M软盘中FAT12文件系统结构。
执行命令:D 0000软盘有两面,每面80个磁道,每个磁道18个扇区,每个扇区512个字节,所以软盘的容量是2*80*18*512 = 1474560, 1474560/1024/1024大约为1.44M。
3.分析文件分配表结构,了解用簇链映射的文件的链式存储结构。