zhouqijie

文件系统概述

如果由用户直接管理外存上的信息,需要用户熟悉外存的物理特性、信息在外存上的物理位置、以及组织数据输入输出等具体的外存物理设备操作细节。在多用户环境下,还必须能保持数据的安全性和一致性。
显然,这时用户不能胜任的。所以操作系统把外存上的软件资源抽象成文件的形式提供给用户,并增加了文件系统管理功能,专门管理外存上的文件,向用户提供存储、检索、共享、保护文件的机制,以达到方便用户使用和提高资源利用率的目的。

文件系统应具备的功能:实现文件的按名存取、分配和管理文件的存储空间、建立并维护文件目录,提供合适的文件存取方法、实现文件的共享和保护、提供用户使用文件的接口。



1、文件的概念

在计算机系统中,文件(File)是指存储在外部存储介质上的、由文件名标识的一组相关信息的集合。
例如一个源程序、一批数据、各类语言的编译程序等都可以各自组成一个文件。

文件的概念本身体现了操作系统的一种抽象机制,用于逻辑上描述存储在外存上的数据,为用户提供了一种在外存上方便保存信息和读取信息的方法,使得用户不必了解消息存储的方法、位置、存储设备实际运作方式便可以存取信息。把数据组织成文件形式加以管理和控制是计算机数据管理的重大发展。

文件名:

  1. 当一个进程创建一个文件必须给出文件名,以后这个文件将独立于进程存在,直到它被显式地删除;
  2. 当其他进程要使用这一文件时必须显式地指出文件名;
  3. 操作系统也需要根据文件名对文件进行控制和管理。

文件命名规则:

各种系统的文件命名规则不尽相同,但是一般来说,文件名称都是由文件名扩展名两部分组成,中间用“.”分隔开,前者用于识别文件,后者用于标识文件类型。

不同的系统支持的文件名称的长度是不一样的,早期的系统中,文件名称的长度一般都受到限制,即只支持短文件名。例如MS-DOS中,文件名遵循“8+3”命名规则,即最多8个字符的文件名外加最多3个字符的扩展名。老板的UNIX允许文件名多达14个字符的长度。Windows95开始,现代的操作系统都支持长文件名,如Windows2000/xp/2003中所采用的NTFS文件系统文件名可达255个字符。

另外有些操作系统的文件命名不区分大小写,例如MS-DOS和Windows系列操作系统,但在UNIX和Linux系统是区分大小写的。

每个操作系统对可用文件名称字符也做了不同的限制,像Windows的文件命名不能使用\/<>*?|"等字符。

扩展名:

扩展名是添加在文件名后面的若干个附加字符,又称为后缀名,常常用做定义各种类型的文件,长度一般在1~4字符。例如.exe代表可执行的二进制文件,.txt表示该文件是一个文本文件。不同的操作系统对扩展名的要求也不一样。



2、文件系统

操作系统中负责管理和存取文件信息的软件机构称为文件管理。文件系统是指操作系统中与文件管理有关的那部分软件被管理的文件、以及实现管理所需要的一些数据结构的总体。

  1. 从系统角度来看,文件系统是对文件存储空间进行组织、分配、并负责文件的存储、保护、检索的系统。
  2. 从用户角度来看,文件系统主要是实现“按名存取”,并向用户提供简便、统一的使用文件的接口。

文件系统的功能:

  1. 实现文件的“按名存取”功能。也叫透明存取功能,即用户不必了解文件存放的物理结构、物理位置、查找方法、I/O实现细节等与外存存储介质有关的物理特性,只要知道文件名就可以存取信息。
  2. 实现能够快速定位文件的目录结构,如树形目录;考虑如何组织目录文件,即目录项的设计和文件控制块的存储组织方法,这也直接影响到检索文件的速度。
  3. 向用户提供一套使用方便、简单的操作指令。主要有两类:一是面向用户编程的,例如readwrite等系统调用。二是面向键盘的命令,供用户联机时或者编写Shell过程时或编写作业说明书时使用。
  4. 管理磁盘、磁带等组成的文件存储器。记录那些空间被占用、那些空间空闲,以使用户创建文件时,为其分配空闲空间;删除文件时,收回相应的空间。
  5. 实现逻辑文件到物理文件的转换(映射)。从用户看到的文件组织形式是文件的逻辑结构,用户可以在规则下定义文件的逻辑结构;文件在外存的存放方式和组织形式是文件的物理结构。
  6. 保证文件的安全可靠。文件系统必须防止对文件信息的有意或无意的破坏窃用。此外文件使用过程中如果出现故障,文件系统可组织重执或恢复。
  7. 便于文件的共享。文件系统应提供多个用户或进程以同名或者异名共享用一个文件。这样,在系统中只需保留该共享文件的一个副本,节省了存储空间并减少了互相传递文件的消耗。

常用文件系统举例:

  1. Ext2:Linux最为常用的文件系统,设计易于向后兼容。
  2. NFS:网络文件系统,允许多台计算机之间共享文件系统,易于从网络中的计算机存取文件。
  3. HPFS:高性能文件系统,是IBM OS/2的文件系统。
  4. FAT:经过MS-DOS、Windows3.x、Windows9x、WindowsNT、Windows2000/xp和OS/2等操作系统不断改进,它已经发展成包含FAT12、FAT16、FAT32的庞大家族。
  5. NTFS:NTFS是微软为了配合WindowsNT的推出而设计的文件系统,为系统提供了极大的安全性和可靠性。



3、文件的属性

一个文件包括文件体和文件属性两个部分。文件提是一系列的记录或字符流,以物理块存放在外存上,也叫文件内容。
文件属性是对文件进行说明的信息,例如文件创建日期、文件长度、文件存放位置、权限等,这些信息主要被文件系统用来管理文件。

一些常用的文件属性:

  1. 文件名称:是供用户使用的外部标识,也是文件最基本属性。
  2. 文件物理位置:具体标明文件在存储介质上所存放的物理位置。
  3. 文件拥有者:操作系统通常是多用户的,不同的用户拥有各自不同的文件,对这些文件的操作权限也不同。
  4. 文件权限:通过文件权限,文件拥有者可以为自己的文件赋予各种权限。
  5. 文件类型:可以从不同的角度对文件分类,例如普通文件、设备文件、可执行文件、文本文件等。
  6. 文件长度:文件长度通常是数据的长度,长度单位通常是字节。
  7. 文件时间:文件时间有很多。如最初创建时间、最后一次的修改时间,最后一次执行时间、最后一次的读时间等。



4、文件的分类

为了有效和方便地分类和组织文件,常按照不同的观点对文件进行分类。文件分类方法有很多,下面是一些常见的分类方法:

  1. 按照文件的逻辑结构不同,可以把文件分为流式文件和记录式文件。构成流式文件的基本单位是字节或字符,如ASCII文件或者二进制文件;构成记录式文件的基本单位是记录,一条记录又由若干个数据项组成。
  2. 按照用途分为系统文件、库文件、用户文件。
  3. 按照性质可以分为普通文件、目录文件、特殊文件。(在UNIX系统中所有输入输出设备都被看作特殊文件)
  4. 按照保护级别可以分为只读文件、只写文件、可读写文件、可执行文件、不保护文件等。
  5. 按照文件数据的形式可以分为源文件、目标文件、可执行文件。
  6. 按照保护期限可以分为临时文件和永久文件。



5、文件的使用

为了方便用户使用文件系统,文件系统向用户提供了两类操作接口:

第一类是与文件有关的操作命令或作业控制语言中与文件有关的JCL语句。(例如UNIX中的cd、cat、cp、find、mv、rm、mkdir、rmdir等)
第二类是提供给用户程序使用的文件类系统调用,构成了用户和文件系统的另一个接口,通过这些接口用户能获得文件系统的各种服务。

  1. 文件创建:创建文件时系统首先为新文件分配所需的外村空间、并且在文件系统的相应目录中建立一个目录项,该目录项记录了新文件的文件名及其在外存中的地址等属性。
  2. 文件删除:当已经不再需要某个文件时,便可以把它从文件系统删除。这时执行的是与创建新文件相反的操作。系统首先找到要删除的文件项,使之成为空项,紧接着回收该文件的存储空间。
  3. 文件截断:如果一个文件的内容已经很陈旧而需要进行全部更新时,可以先删除文件再建立一个新文件,但是如果文件名及其属性没有发生变化时,可阶段文件,即将原有的文件长度设为0,即放弃文件内容。
  4. 文件读:通过读指针将位于外存的数据读入到内存缓冲区。
  5. 文件写:通过写指针将内存缓冲区的数据写入外存的文件中。
  6. 文件读写定位:读写操作只是提供了文件的顺序存储手段,而若对文件的读写进行定位操作,也即改变读写指针的位置,则可以从文件的任意位置开始读写,为文件提供随机存储能力。
  7. 文件打开:在开始使用文件时,首先必须打开文件。这可以将文件属性信息装入内存,以供以后快速查用。
  8. 文件关闭:在完成文件使用后,应该关闭文件。这不但是为了释放内存空间,而且也因为许多系统常常限制于可以同时打开的文件数。

(END)