1、为什么需要文件系统

所有应用程序之所以运行是为了对数据进行处理,一个应用程序既可能需要读入数据,也可能需要输出数据。那么这些数据就需要存放在某个地方。
而内存容量有限,不持久,且难以共享。一旦该进程结束运行,地址空间将失效,里面的数据无法再被任何人访问,而且即使进程尚未结束,若突然断电也会造成数据消失。

2、什么是文件系统

文件系统是操作系统提供的一个抽象。简单地说,就是将其接触的磁盘物理特性转换为用户看到的路径名和文件名。用户对磁盘进行访问只需要给出文件名和路径名即可,无需知道磁柱、磁道、扇面、数据块等信息。
文件系统的主要特性就是存储大量的信息,多个进程可以同时访问一个文件,进程的结束也不会影响文件的持续存在。

3、文件系统的目标

文件系统的两个目的:地址独立和地址保护。
地址独立就是一个文件在产生的时候无需担心其存放的磁盘地址,即文件数据的产生与文件将来存放的磁盘地址相互独立。
地址保护则需要对文件的访问逬行一定的限制,即不是任何人都可以访问任何文件的。

4、从用户角度看文件系统

从用户的角度来看,用户关心的是这个文件对他来说是什么东西:比如说什么是一个文件、对文件可以进行哪些操作。即用户关心的是“怎么用”。
从操作系统设计人员的角度来看,他们关心的则是文件是如何构造的,如何跟踪磁盘上的自由空间,具体的磁盘结构,即设计人员关心是“怎么实现的“。

1、文件命名

即用户给文件起一个名字,这个文件名既可以是英文名、中文名,也可以是图像名。
当用户给出一个文件名,操作系统就可以根据这个名字来找到对应文件的内容。具体来说,就是找到该文件存放在磁盘上的所有数据块。

2、扩展名

扩展名通常用来表明文件的类型,如文本文件、二进制文件等。例如file.c表明该文件是一个c源文件;file2.cpp表明该文件是一个C++源文件。

3、内容寻址

给岀文件的内容,供操作系统来査找。一般存在于数据库系统或者以内容寻址为访问方式的存储系统。

4、文件内容组织

关系导向型组织
关系导向型的内容组织就是将数据之间的关系记录在文件里面,文件的构造与数据之间的关系存在某种对应关系。
关系导向型文件内容的组织形式:
15--文件基础 - 图1
非关系导向型组织
非关系导向型文件内容组织形式则不考虑数据里面的任何结构。对于此种方式来说,数据就是一个数据流,没有记录,没有关系。这个数据流既可以是字位流,也可以是字节流,也可以是数据块流。它们之间的不同就是这个流的单位不同。
非关系导向型文件内容组织形式:
15--文件基础 - 图2
两种组织方式比较
现代商业操作系统基本上都使用字节流方式来组织文件内容。因为它简单,而追求简单正是操作系统设计的努力方向。使用字节流方式来组织文件内容使得操作系统的代码更加可靠、更加灵活、用户程序编写也更加方便。

5、文件类型

文件分为三种:
1、目录
2、一般文件
3、块文件
目录是记录文件的文件,即它的内容是关于别的文件。一般文件用来保存数据,一般文件分为下列几种文件:
1、文本文件
2、二进制文件
文本文件存放的是没有经过处理的数据,即以ASCII码表示的数据。二进制文件是经过编码的文件,必须用专门的应用软件才能打开。另外加密文件也是二进制文件。

6、文件访问

文件的访问类型只有两种:顺序访问和随机访问。
顺序访问就是从开头访问起,按先来后到的顺序读取数据,不能在中间随便跳转。随机访问则是可以按照任意顺序读取数据记录。
现代操作系统无一例外都提供随机访问,这是因为我们的存储媒介已经是随机读写的磁盘了。

7、地址独立的实现机制:文件夹

文件夹保存的不是用户数据,而是关于文件及文件系统的信息。简单地说,文件夹的角色就是用来跟踪文件,里面存放的是从文件到文件在磁盘的地址的映射。
文件夹结构
由于文件夹里面又可以有文件夹,这样就形成一个层次结构。而这个层次结构的顶端就是根文件夹,也称为根目录。
文件夹的层次结构:
15--文件基础 - 图3
相对路径与绝对路径
从根目录开始的一个完全路径,称为绝对路径。绝对路径是从根目录的视角看,一个文件的访问路径。
与此相对的是相对路径,即从某个工作目录的角度看,如用户当前所处的目录的角度看某一个文件的访问路径。
使用相对路径的好处是没有必要走遍整个目录夹,可以节省磁盘访问次数,从而提高文件访问效率。使用绝对路径的好处是操作时不会出错。