1.29k likes | 1.41k Views
Chapter6 文件管理. §6.1 文件和文件系统. §6.2 文件的逻辑结构. §6.3 外存分配方式. §6.4 目录管理. §6.5 文件存储空间的管理. §6.6 文件系统的使用. §6.1 文件和文件系统. 文件和文件系统(续). 文件系统的管理功能,是通过把它所管理的程序和数据组织成一系列文件的方法来实现的。 文件则是指具有文件名的若干相关元素的集合。元素通常是记录,而记录又是一组有意义的数据项的集合。 基于文件系统的概念,可以把数据组成分为数据项、记录和文件三级。. §6.1.1 文 件. 所有的计算机应用程序都要:
E N D
Chapter6文件管理 §6.1文件和文件系统 §6.2 文件的逻辑结构 §6.3 外存分配方式 §6.4 目录管理 §6.5 文件存储空间的管理 §6.6 文件系统的使用
文件和文件系统(续) • 文件系统的管理功能,是通过把它所管理的程序和数据组织成一系列文件的方法来实现的。 • 文件则是指具有文件名的若干相关元素的集合。元素通常是记录,而记录又是一组有意义的数据项的集合。 • 基于文件系统的概念,可以把数据组成分为数据项、记录和文件三级。
§6.1.1 文 件 • 所有的计算机应用程序都要: 存储信息,检索信息 • 三个基本要求: • 能够存储大量的信息 • 长期保存信息 • 可以共享信息
信息存储 • 解决方法: 把信息以一种单元,即文件的形式存储在磁盘或其他外部介质上 • 文件是通过操作系统来管理的,包括: 文件的结构,命名,存取,使用,保护和实现方法
文 件 • 一组带标识的在逻辑上有完整意义的信息项的序列,这个标识为文件名: • 信息项:构成文件内容的基本单位 • 长度:单个字节,或多个字节 • 文件内容的意义:由文件的建立者和使用者解释
编号:0 1 …… i …… n-1 信息项 信息项 ……... 信息项 ……... 信息项 读写指针 各信息项之间具有顺序关系 文件信息
文 件(续) • 文件是指由创建者所定义的、具有文件名的一组相关元素的集合,可分为有结构文件和无结构文件两种。 • 在有结构的文件中,文件由若干个相关记录组成;而无结构文件则被看成是一个字符流。 • 例如,可以将一个班的学生记录作为一个文件。一个文件必须要有一个文件名,它通常是由一串ASCII码或(和)汉字构成,名字的长度因系统不同而异。 • 文件是一个抽象机制,它提供了一种把信息保存在存储介质上,而且便于以后存取的方法,用户不必关心实现细节
§6.1.2 文件分类和文件系统 • 文件分类 • 按用途分类 根据文件的性质和用途,可将文件分为三类: • 系统文件。这是指由系统软件构成的文件。大多数的系统文件只允许用户调用但不允许用户去读,更不允许修改;有的系统文件不直接对用户开放。 • 用户文件。指由用户的源代码、目标文件、可执行文件或数据等所构成的文件。用户将这些文件委托给系统保管。 • 库文件。这是由标准子例程及常用的例程等所构成的文件,供调用,但不允许修改。
文件分类(续1) • 按文件中数据的形式分类 按这种方式分类,也可把文件分为三类: • 源文件 这是指由源程序和数据构成的文件。通常由终端或输入设备输入的源程序和数据所形成的文件都属于源文件。它通常是由ASCII码或汉字所组成的。 • 目标文件 这是指把源程序经过相应语言的编译程序编译过,但尚未经过链接程序链接的目标代码所构成的文件。它属于二进制文件。通常,目标文件所使用的后缀名是”.OBJ” • 可执行文件 这是指把编译后所产生的目标代码再经过链接程序链接后所形成的
文件分类(续2) • 按存取控制属性分类 根据系统管理员或用户所规定的存取控制属性,可将文件分为三类: • 只执行文件。该类文件只允许被核准的用户调用执行,既不允许读,更不允许写。 • 只读文件。该类文件只允许文件主及被核准的用户去读,但不允许写。 • 读写文件。这是指允许文件主和被核准的用户去读或写的文件。
文件系统 • 文件系统是操作系统中负责管理和存取文件信息的软件机构,它是由管理文件所需的数据结构和相应的管理软件以及访问文件的一组操作组成。 • 从系统的角度看:文件系统是一个负责文件存储空间管理的机构。 • 从用户的角度看:文件系统是用户在计算机上存储信息、和使用信息的接口。
文件系统的功能 • 提供用户对文件操作的命令; • 提供用户共享文件的机制; • 管理文件的存储介质; • 提供文件的存取控制的机制,保障文件及文件系统的安全性; • 提供文件及文件系统的备份和恢复功能; • 提供对文件的加密和解密功能。
§6.1.3 文件操作 • 用户通过文件系统所提供的系统调用实施对文件的操作。 • 创建文件 • 删除文件 • 读文件 • 写文件 • 截断文件 • 设置文件的读/写位置。
文件的创建与删除 • 创建文件 创建一个新文件时,系统首先为新文件分配必要的外存空间,并在文件系统的目录中,为之建立一个目录项。目录项中记录新文件的文件名及其在外存的地址等属性。 • 删除文件 在删除时,系统应先从目录中找到要删除文件的目录项,使之成为空项,然后回收该文件所占用的存储空间。
文件的打开与关闭 • 系统将指名文件的属性(包括该文件在外存上的物理位置)从外存拷贝到内存打开文件表的一个表目中,并将该表目的编号(或称为索引)返回给用户。 • 当用户再要求对该文件进行相应的操作时,便可利用系统所返回的索引号向系统提出操作请求。 • 系统可直接利用该索引号到打开文件表中去查找,从而避免了对该文件的再次检索。这样不仅节省了大量的检索开销,也显著地提高了对文件的操作速度。
进程打开文件 • 系统打开文件表(整个系统一张) • 放在内存。用于保存已打开文件的FCB • 文件号,共享计数,修改标志 • 用户打开文件表(每个进程一个) • 文件描述符,打开方式,读写指针,系统打开文件表入口 • 进程的PCB中,记录了用户打开文件表的位置
进程打开文件(续1) • 用户打开文件表与系统打开文件表之间的关系 • 用户打开文件表指向系统打开文件表 • 如果多个进程共享同一个文件,则多个用户打开文件表目对应系统打开文件表的同一入口
Linux Virtual File System(1/3) • Uniform file system interface to user processes • Represents any conceivable file system’s general feature and behavior • Assumes files are objects that share basic properties regardless of the target file system
§6.2 文件的逻辑结构 • 可以用两种不同观点研究文件结构 • 用户观点: 研究用户“思维”中的抽象文件,或称逻辑文件,其研究的侧重点在于为用户提供一种逻辑结构清晰、使用简便的逻辑文件形式。用户将按照这种形式去存储、检索和加工有关文件中的信息。 • 实现观点: 研究驻留在设备“介质”中的实际文件,或称物理文件。它研究的侧重点是选择一些工作性能良好、设备利用率高的物理文件形式。系统将按照这种形式同外部设备打交道并控制信息的传输
§6.2.1 文件逻辑结构的类型 • 文件的逻辑结构可分为两大类 • 有结构文件 由一个以上的记录构成的文件,故又把它称为记录式文件 • 无结构文件 由字符流构成的文件,故又称为流式文件。
有结构文件分类 • 在记录式文件中,每个记录都是描述实体集中的一个实体,各记录有着相同或不同数目的数据项。记录的长度可分为定长和不定长两类。 • 定长记录。 是指文件中所有记录的长度都是相同的,所有记录中的各数据项,都处在记录中相同的位置,具有相同的顺序和长度。文件的长度用记录数目表示。对定长记录的处理方便、开销小,所以这是目前较常用的一种记录格式,被广泛用于数据处理中。 • 变长记录。 是指文件中各记录的长度不相同。产生变长记录的原因,可能是由于一个记录中所包含的数据项数目并不相同或数据项本身的长度不定 • 不论是哪一种,在处理前,每个记录的长度是可知的。
有结构文件分类 • 根据用户和系统管理上的需要,可采用多种方式来组织这些记录,形成下述的几种文件: • 顺序文件 • 索引文件 • 索引顺序文件
无结构文件 • 大量的数据结构和数据库,采用有结构的文件形式; • 而大量的源程序、可执行文件、库函数等,所采用的就是无结构的文件形式,即流式文件,其长度以字节为单位。 • 对流式文件的访问,则是采用读写指针来指出下一个要访问的字符。可以把流式文件看作是记录式文件的一个特例。 • 在UNIX系统中,所有的文件都被看作是流式文件;即使是有结构文件,也被视为流式文件;系统不对文件进行格式处理。
§6.2.2 顺序文件 由一系列记录按某种顺序排列形成的文件。其中的记录通常是定长记录,因而能用较快的速度查找文件中的记录。
顺序文件(续2) • 顺序文件的优点 顺序文件的最佳应用场合,是在对诸记录进行批量存取时,即每次要读或写一大批记录。此时,对顺序文件的存取效率是所有逻辑文件中最高的;此外,也只有顺序文件才能存储在磁带上,并能有效地工作。
顺序文件(续3) • 顺序文件的缺点 • 在交互应用的场合,如果用户(程序)要求查找或修改单个记录,为此系统便要去逐个地查找诸记录。这时,顺序文件所表现出来的性能就可能很差,尤其是当文件较大时,情况更为严重。 • 顺序文件的另一个缺点是,如果想增加或删除一个记录,都比较困难。
§6.2.3 索引文件 • 对于定长记录,除了可以方便地实现顺序存取外,还可较方便地实现直接存取。 • 对于变长记录就较难实现直接存取,因为用直接存取方法来访问变长记录文件中的一个记录是十分低效的。 • 为了解决这一问题,为变长记录文件建立一张索引表,对主文件中的每个记录,在索引表中设有一个相应表项,用于记录该记录的长度L及指向该记录的指针(指向该记录在逻辑地址空间的首址) • 由于索引表按记录键排序的,索引表本身是一个定长记录的顺序文件,从而也就可以方便地实现直接存取。
索引文件(续1) 通常为记录建立一张索引表,并为每个记录设置一个表项,以加快对记录检索的速度。
索引文件(续2) • 在对索引文件进行检索时 • 首先是根据用户(程序)提供的关键字,并利用折半查找法去检索索引表,从中找到相应的表项; • 再利用该表项中给出的指向记录的指针值,去访间所需的记录。 • 每当要向索引文件中增加一个新记录时,便须对索引表进行修改。 • 由于索引文件可有较快的检索速度,故它主要用于对信息处理的及时性要求较高的场合。 • 缺点:它除了有主文件外,还须配置一张索引表,而且每个记录都要有一个索引项,因此提高了存储费用。
§6.2.4 索引顺序文件 • 有效地克服了变长记录文件不便于直接存取的缺点,而且所付出的代价也不算太大。 • 是顺序文件和索引文件相结合的产物。 • 它将顺序文件中的所有记录分为若干个组(例如,50个记录为一个组); • 为顺序文件建立一张索引表,在索引表中为每组中的第一个记录建立一个索引项,其中含有该记录的键值和指向该记录的指针。
索引顺序文件(续2) • 在对索引顺序文件进行检索时 • 首先也是利用用户(程序)所提供的关键字以及某种查找算法,去检索索引表,找到该记录所在记录组中第一个记录的表项,从中得到该记录组第一个记录在主文件中的位置; • 再利用顺序查找法去查找主文件,从中找到所要求的记录。
§6.2.5 哈希文件 • 这是目前应用最为广泛的一种直接文件。 • 它利用Hash函数(或称散列函数),可将记录键值转换为相应记录的地址。 • 为了能实现文件存储空间的动态分配,通常由Hash函数所求得的并非是相应记录的地址,而是指向一目录表相应表目的指针,该表目的内容指向相应记录所在的物理块。
§6.3 外存分配方式 • 利用磁盘来存放文件,在为文件分配外存空间时所要考虑的主要问题是:怎样才能有效地利用外存空间和如何提高对文件的访问速度。 • 目前常用的外存分配方法有: • 连续分配 • 链接分配 • 索引分配
存储介质 磁带 磁盘 物理结构 连续结构 连续 链接 索引 存取方式 顺序存取 顺序 顺序 顺序 随机 随机 外存分配与存储介质
§6.3.1 连续分配 • 连续分配(Continuous Allocation)要求为每一个文件分配一组相邻接的盘块。一组盘块的地址定义了磁盘上的一段线性地址。 • 例如,第一个盘块的地址为b,则第二个盘块的地址为b+1,第三个盘块的地址为b+2,…。 • 通常,它们位于一条磁道上,在进行读/写时,不必移动磁头,仅当访问到一条磁道的最后一个盘块后,才需要移到下一条磁道,于是又去连续地读/写多个盘块。 • 在采用连续分配方式时,可把逻辑文件中的记录顺序地存储到邻接的各物理盘块中。 • 所形成的文件结构称为顺序文件结构,物理文件称为顺序文件。