存储基础知识三 文件系统
2009-10-10 00:00:00 来源:WEB开发网一、概述
文件系统定义了把文件存储于磁盘时所必须的数据结构及磁盘数据的管理方式。我们知道,磁盘是由很多个扇区(Sector)组成的,如果扇区之间不建立任何的关系,写入其中的文件就无法访问,因为无法知道文件从哪个扇区开始,文件占多少个扇区,文件有什么属性。为了访问磁盘中的数据,就必需在扇区之间建立联系,也就是需要一种逻辑上的数据存储结构。建立这种逻辑结构就是文件系统要做的事情,在磁盘上建立文件系统的过程通常称为“格式化”。
以 Windows平台下最常见的FAT文件系统为例。FAT文件系统有两个重要的组成部分:FAT表(File Allocation Table)和数据存储区。FAT表是FAT文件系统的名称来源,它定义了存储数据的簇(Cluster,由2的n次方个Sector组成,n值根据分区大小而定,需综合考虑数据存取效率和存储空间的利用率)之间的链接关系,这种链接关系是一个单向链表,指向0xFF表示结束。依据一个簇编号所用bit数的不同,可分为FAT12、FAT16和FAT32文件系统。数据区存储的数据包含文件目录项(Directory Entries)和文件数据。文件目录项存储的是一个文件或目录的属性信息,包括文件名称(把目录也看成是文件)、读写属性、文件大小、创建时间、起始簇编号等,一个目录下的每个子目录和文件都对应一个表项记录。文件目录项以固定32字节的长度存储,以树型结构管理,其中根目录的位置是确定的。也就是说,根据分区根目录可以找到下级子目录和文件的起始簇编号,根据下级子目录又可以找到更下级目录或文件的起始簇编号。可见,FAT表和文件目录项是为了文件的访问和管理而建立的。应用程序要访问一个文件时,根据文件路径(逻辑分区号+目录,如F:\software)和文件名称(如setup.exe)可从文件目录项中获得存储文件数据的起始簇号,之后从FAT表查询这个簇号对应的链表,就可以获得该文件对应的全部簇编号。从这些簇中读出全部数据,就得到一个完整的文件。
更多精彩
赞助商链接