作者:l佳恒_756 | 来源:互联网 | 2023-10-14 09:25
上篇说到文件内部的逻辑结构和物理结构,而如何在系统中实现按文件名存取文件是非常重要的,也就是如何实现文件名到物理存储地址的转换。为了实现“按名存取”,系统必须为每个文件设置用于描述和控制文件的数据
上篇说到文件内部的逻辑结构和物理结构,而如何在系统中实现按文件名存取文件是非常重要的,也就是如何实现文件名到物理存储地址的转换。
为了实现“按名存取”,系统必须为每个文件设置用于描述和控制文件的数据结构,它至少要包括文件名和存放文件的盘物理地址,这个数据结构称为文件控制块FCB,文件控制块的有序集合称为文件目录,即一个文件控制块FCB就是一个文件目录项。
文件控制块FCB中包含的信息有以下三类:
1. 基本信息类
文件名:标识一个文件的符号名,在每个系统中文件必须具有唯一的名字。
. 文件的物理地址:这由于文件的物理结构不同而不同。对于连续文件就是文件的起始块号和文件总块数;对于MS-DOS是文件的起始簇号和文件总字节数;对于UNIX S V是文件所在设备的设备号、13个地址项和文件长度等。
2.存取控制信息类
文件的存取权限,象UNIX用户分成文件主、同组用户和一般用户三类,这三类用户的读写执行(RWX)的权限。
3.使用信息类
文件建立日期、最后一次修改日期、最后一次访问的日期;当前使用的信息:打开文件的进程数,在文件上的等待队列等。
若干个文件目录组成一个专门的目录文件,目录结构的组织关系到文件系统的存取速度,关系到文件共享性和安全性,常用的目录文件结构有单级目录、两级目录和多级目录。
单级目录:文件系统在每个存储设备上仅仅建立一个目录文件的目录结构,称为单级目录,目录文件中每一个目录项对应一个文件,单级目录结构简单,能实现目录管理的基本功能--按名存取,但存在查找速度慢,不允许重名和不便于实现文件共享等缺点,因此它只适用于单用户环境。
两级目录:文件系统在存储设备上将目录文件分为两级,系统目录(主目录)和用户目录。主目录中存储了用户目录名和指向用户目录的指针,每个文件都是由系统目录中的用户目录和用户目录的文件名标识,这种标识具有唯一性。这种结构仅仅适合用于两个用户,解决了文件重命名的问题,对于多用户的访问对方文件的不便。
多级目录文件:采用树形数据结构,形成一种树形的结构目录。
路径名从根目录开始到该文件的通路上所有各级目录名拼起来得到,各目录名之间与文件名之间可用分隔符隔开。
从根目录经各级子目录到达文件的通路上的所有子目录名称为文件的存取路径。
-------------------------------------------------------------------------------------
文件的共享性
系统中有许多的功用的文件,为了实现文件共享,文件系统在建立目录文件的时候,应该采用有效的方法实现文件的共享。
例如树形多级目录中可以通过无环结构目录图状结构目录,通过指针指向实现文件共享。
一种有效地实现文件共享的方法是基本文件目录表法。
实现文件共享的一种有效方法是基本文件目录法。该方法把所有目录的内容分为文件名和文件说明两部分。一部分称为符号文件目录(SDF),它包含文件符号名和由系统赋予唯一的内部标识符ID组成。另一部分称为基本文件目录(BDF),它包含目录项中除文件符号名外的所有其它信息,并加上与符号目录相一致的内部标识符ID。标识符ID是各文件在基本文件目录中表目的排序号。UNIX/Linux采用了基本文件目录法目录结构。
在主目录中,记录目录名和系统给定的标识符,与BDF中的标识符相对应,当需要查找一个共享文件的时候,首先在主目录中查询BDF表,查询文件所在的SDF表中查找文件所在的物理地址。
目录文件的管理:一般来说,系统只把正在使用的目录文件复制到内存中,成为打开文件,将目录文件从内存中删除称为关闭文件。