鲁东大学信息与电气工程学院2014-2015 学年第 二 学期
《 操作系统 》课程论文 课程号: 2200081
任课教师 田生文 成绩
正文:
摘要:在Linux系统中,有一个重要的概念:一切都是文件。而文件系统是操作系统中最为重要的一部分,它定义了磁盘上存储文件的方法和数据结构,文件系统是操作系统组织、存取和保护信息的重要手段,每种操作系统都有自己的文件系统,如Windows所用的文件系统主要有FAT16、FAT32和NTFS,而在Linux系统中,所用的文件系统主要有ext2、ext3、ext4、ReiserFS和btrfs等。
正文:1. Linux中从 物理磁盘到文件系统
文件最终是保存在硬盘上的。硬盘最基本的组成部分是由坚硬金属材料制成的涂以磁性介质的盘片,不同容量硬盘的盘片数不等。每个盘片有两面,都可记录信息。盘片被分成许多扇形的区域,每个区域叫一个扇区,每个扇区可存储128×2的N次方(N=0.1.2.3)字节信息。在DOS
中每扇区是128×2的2次方=512字节,盘片表面上以盘片中心为圆心,不同半径的同心圆称为磁道。硬盘中,不同盘片相同半径的磁道所组成的圆柱称为柱面。磁道与柱面都是表示不同半径的圆,在许多场合,磁道和柱面可以互换使用,我们知道,每个磁盘有两个面,每个面都有一个磁头,习惯用磁头号来区分。扇区,磁道(或柱面)和磁头数构成了硬盘结构的基本参数,帮这些参数可以得到硬盘的容量,基计算公式为:存储容量=磁头数×磁道(柱面)数×每道扇区数×每扇区字节数 要点:
(1)硬盘有数个盘片,每盘片两个面,每个面一个磁头 (2)盘片被划分为多个扇形区域即扇区 (3)同一盘片不同半径的同心圆为磁道 (4)不同盘片相同半径构成的圆柱面即柱面
(5)公式: 存储容量=磁头数×磁道(柱面)数×每道扇区数×每扇区字节数 (6)信息记录可表示为:××磁道(柱面),××磁头,××扇区 而磁盘块主要分为以下三个部分:
1) 超级块,文件系统中第一个块被称为超级块。这个块存放文件系统本身的结构信息。比如,超级块记录了每个区域的大小,超级块也存放未被使用的磁盘块的信息。 2) I-切点表。超级块的下一个部分就是i-节点表。每个i-节点就是一个对应一个文件/目录的结构,这个结构它包含了一个文件的长度、创建及修改时间、权限、所属关
系、磁盘中的位置等信息。一个文件系统维护了一个索引节点的数组,每个文件或目录都与索引节点数组中的唯一一个元素对应。系统给每个索引节点分配了一个号码,只是它的内容比较特殊。所以它的创建过程和文件创建过程一样,只是第二步写的内容不同。
也就是该节点在数组中的索引号,称为索引节点号
3) 数据区。文件系统的第3个部分是数据区。文件的内容保存在这个区域。磁盘上所有块的大小都一样。如果文件包含了超过一个块的内容,则文件内容会存放在多个磁盘块中。一个较大的文件很容易分布上千个独产的磁盘块中。 2.Linux中 创建一个文件的过程
在Linux操作系统中,文件的内容和属性是分开存放的,那么又是如何管理它们的呢?以创建一个文件为例: 在命令行输入命令: $ who > userlist
通过系统命令ls来查看新建文件userlist的信息:(ls 命令后的i就表示打印i节点信息)
当完成这个命令时。文件系统中增加了一个存放命令who输出内容的新文件userlist,文件主要有属性、内容以及文件名三项。内核将文件内容存放在数据区,文件属性存放在i-节点,文件名存放在目录中。 创建成功一个文件主要有以下四个步骤:
1) 存储属性 也就是文件属性的存储,内核先找到一块空的i-节点,把文件的信息记录其中。如文件的大小、文件所有者、和创建时间等
2) 存储数据 即文件内容的存储,由于该文件需要3个数据块。因此内核从自由块的列表中找到3个自由块。
3) 记录分配情况,数据保存到了三个数据块中。所以必须要记录起来,以后再找到正确的数据。分配情况记录在文件的i-节点中的磁盘序号列表里。这3个编号分别放在最开始的3个位置。
4) 添加文件名到目录,新文件的名字是userlist 内核将文件的入口(47,userlist)添加到目录文件里。文件名和i-节点号之间的对应关系将文件名和文件和文件的内容属性连接起来,找到文件名就找到文件的i-节点号,通过i-节点号就能找到文件的属性和内容。
3.Linux中创建一个目录的过程
现在test目录使用命令mkdir 新增一个子目录child,从用户的角度看,目录child是目录test的一个子目录,那么在系统中这层关系是怎么实现的呢?实际上test目录包含一个指向子目录child的i-节点的链接,原理跟普通文件一样,因为目录也是文件。
1) 系统找到空闲的i-节点号887220,写入目录的属性
2) 找到空闲的数据块1002来存储目录的内容,只是目录的内容比较特殊,包含文件名字列表,列表一般包含两个部分:i-节点号和文件名,这个列表其实也就是文件的入口,新建的目录至少包含三个目录”.”和”..”其中”.”指向自己,”..”指向上级目录,我们可以通过比较对应的i-节点号来验证,887270 对应着上级目录中的child对应的i-节点号
3) 记录分配情况。这个和创建文件完全不样
4) 添加目录的入口到父目录,即在父目录中的child入口。
一般都说文件存放在某个目录中,其实目录中存入的只是文件在i-节点表的入口,而文件的内容则存储在数据区。图3中,我们一般会说“文件userlist在目录test中”,其实这意味着目录test中有一个指向i-节点921130的链接,这个链接所附加的文件名为userlist,这也可以这样理解:目录包含的是文件的引用,每个引用被称为链接。文件的内容存储在数据块。文件的属性被记录在一个被称为i-节点的结构中。I-节点的编号和文件名关联起来存在目录中。
注意:其中“.”表示是当前目录。而“..”是当前目录的父目录。但也有特殊情况。 4.Linux中的相关链接
链接分为两种,1.硬链接,2符号链接(也称为软链接) 4.1. 硬链接
硬链接(had link),是将目录链接到文件树的指针,硬链接同时也是将文件名和文件本身链接起来的指针。
创建一个链接的步骤大概如下:
1) 通过原文件的文件名找到文件的i-节点号
2) 添加文件名关联到目录,新文件的名字是mylink 内核将文件的入口(921130,mylink)添加到目录文件里。和创建文件的过程比较发现,链接少了写文件内容的步骤,完全相同的是把文件名关联到目录这一步。现在.i- 节点号921130对应了两个文件名。链接数也会变成2个,文件的内容并不会发生任何变化。因为目录包含的是文件的引用,每个引用被称为链接。所以链接文件和原始文件本质上是一样的,因为它们都是指向同一个i-节点。由于此原因也就可以理解链接的下列特性:改变其中任何一个文件的内容,别的链接文件也一样是变化;另外如果删除某一个文件,系统只会在所指向的i-节点上把链接数减1,只有当链接数减为零时才会真正释放i-节
点。
此外,硬链接有两个特点: 1)不能跨文件系统 2)不能对目录 4.2符号链接(软链接)
符号链接也称“软链接”,符号链接是通过文件名引用文件,而不是i-节点号,这和硬链接的原理完全是不同的,通过ln –s 创建的软链接mylink2的i-节点是1574059,和../userlist的不相同。软链接的优点就是可以跨不同的文件系统,而且可以链接目录。 5.Linux中与文件系统相关概念
存储介质:硬盘、光盘、软盘、Flash盘、磁带、网络存储设备等;
磁盘分区:主要针对于大容量的存储设备来说的,其中主要是指硬盘,对于大硬盘,要学会合理的进行分区规划存储空间;
文件系统的创建:是指存储设备建立文件系统的过程,一般也被称为格式化或者初始化;
挂载:文件系统只有挂载才能使用,Linux操作系统是通过mount进行的,挂载文件系统时要有挂载点,挂载点通常是指一个空置的目录;
文件系统结构:文件系统是用来组织和排列文件存取的,所以它是可见的,在Linux中,可以通过ls等工具来查看其结构。
参考资料:
【1】 张勤.Linux从初学到精通[M].北京:机械工业出版社.2011.4 【2】 汪荣斌.Linux操作系统教程[M].北京:工商出版社.2010.9 【3】 鸟哥.鸟哥的Linux私房菜.北京:人民邮电大学出版社.2012.7