文件是具有文件名的一组相关元素的集合,在文件系统中是一个最大的数据单位,它描述了一个对象集,每个文件都有一个文件名,用户通过文件名来访问文件。
文件的组成结构:
数据项组成记录,记录组成文件。
- 数据项:数据项是文件系统中最低级的数据组织形式,可分为以下两种类型:
基本数据项:用于描述一个对象的某种属性的一个值,如姓名、日期或证件号等,是数据中可命名的最小逻辑数据单位,即原子数据。
组合数据项:由多个基本数据项组成。
- 记录:记录是一组相关的数据项的集合,用于描述一个对象在某方面的属性,如一个考生报名记录包括姓名、出生日期、报考学校代号、身份证号等一系列域。
- 文件:文件是指由创建者所定义的一组相关信息的集合,逻辑上可分为有结构文件和无结构文件两种。在有结构文件中,文件由一组相似记录组成,如报考某学校的所有考生的报考信息记录,又称记录式文件;而无结构文件则被看成是一个字符流,如一个二进制文件或字符文件,又称流式文件。
文件的属性:
- 名称:文件名唯一,以容易读取的形式保存;
- 标识符:系统内文件的唯一标签,通常为数字,对用户来说是透明的;
- 文件类型:被支持不同类型的文件系统所使用;
- 文件位置:指向文件的指针;
- 文件的大小、建立时间、用户标识等。
文件的操作:
- 创建文件,创建新文件时,系统先要为其分配必要的外存空间,并在目录中建立一个目录项。
- 删除文件,删除文件时应先删除文件的目录项,使之成为空项,然后回收文件所占的存储空间;
- 读文件,系统将文件名和文件内存目标地址给文件调用程序,同时查找目录,根据文件的外存地址设置一个读指针,当进行读操作时更新读指针;
- 写文件,系统将文件名和文件内存地址传递给文件调用程序,同时查找目录,根据外存地址设置写指针,当进行写操作时更新写指针。
- 截断文件,当文件内容不再需要或者需要全部更新时,可以将文件删除重新创建或者保持文件所有属性不变,删除文件内容即将其长度设为0并释放其空间;
- 设置文件的读/写位置,通过设置文件的读/写位置,可以使每次对文件操作时不必从文件始端开始,而可以从某个特定位置开始。
文件的打开和关闭操作
- 打开文件:系统将文件的属性从外存复制到内存,并设定一个编号(或索引)返回给用户。以后当用户对该文件进行操作时,只需利用编号(或索引号)向系统提出请求即可。这样避免了系统对文件的再次检索,既节约了检索开销,又提高了对文件的操作速度。
每个打开文件都有如下关联信息:
- 文件指针,系统跟踪上次读写位置作为当前文件位置指针,这种指针对打开文件的某个进程来说是唯一的,因此,必须与磁盘文件属性分开保存。
- 文件打开计数,文件关闭时,操作系统必须重用其打开文件表(包含所有打开文件信息的表)条目,否则表内空间会不够用。因为多个进程可能打开同一个文件,所以系统在删除打开文件条目之前,必须等待最后一个进程关闭文件。该计数器跟踪打开和关闭的数量,当该计数为0时,系统关闭文件,删除该条目。
- 文件磁盘位置,绝大多数文件操作都要求系统修改文件数据,该信息保存在内存中,以免为每个操作都从磁盘中读取。
- 访问权限,每个进程打开文件都需要有一个访问模式(创建,只读,读写,添加等)。该消息保存在进程的打开文件表中,以便操作系统能允许或拒绝之后的I/O请求。
- 关闭文件,系统将打开的文件的编号(或索引号)删除,并销毁其文件控制块,若文件被修改,则需要将修改保存到外存。
文件的逻辑结构
记录式文件(即有结构文件)的逻辑结构通常分为顺序、索引和索引顺序结构。
1.顺序文件
2.索引文件
3.索引顺序文件
4.直接文件和散列文件
目录结构
1.文件目录
目录最基本的功能就是通过文件名存取文件,一般来说,目录应具有以下几个功能:
- 实现“按名存取”
- 提高检索速度
- 允许文件同名,为了便于用户按照自己的习惯来命名和使用文件,文件系统应该允许对不同的文件使用相同的名称,这时,文件系统可以通过不同工作目录来对此加以区别。
- 允许文件共享
- 通常,文件目录也作为一个文件来处理,成为目录文件。
2.文件控制块和索引节点
(1)文件控制块
从文件管理的角度看,文件由文件控制块FCB和文件体两部分组成。文件体即文件本身,而文件控制块(又称为文件说明)则是保存文件属性信息的数据结构,它包含的具体内容因操作系统而异,但至少包含以下信息:
- 文件名:该信息用于标识一个文件的符号名,每个文件必须具有唯一的名字,这样用户可以按照文件名进行文件操作。
- 文件的结构:该信息用于说明文件的逻辑结构是记录式文件还是流式文件,若为记录式文件还需进一步说明记录是否定长、记录长度及个数;说明文件的物理结构是顺序文件、索引顺序文件还是索引文件。
- 文件的物理地址:该信息用于指示文件在外存上的存储位置,包括存放文件的设备名,文件在外存的存储地址以及文件长度等。文件物理地址的形式取决于物理结构,如对于连续文件应给出文件第一块的物理地址及所占块数,对于索引顺序文件只需给出第一块的物理地址,而索引文件则应给出索引表地址。
- 存取控制信息:该信息用于指示文件的存储权限,包括文件拥有者(也成为文件主)的存储权限以及文件主同组用户的权限和其他一般用户的权限。
- 管理信息:该信息包括文件建立的日期及时间、上次存取文件的日期和时间以及当前文件使用状态的信息。
(2)索引节点
在检索目录文件的过程中,只用到了文件名,仅当找到匹配目录项时,才需要从该目录项中读出该文件的物理地址。也就是说,在检索目录时,文件的其他描述信息是不会被用到的,因此也不需要调入内存。因此,有些系统采用了文件名和文件描述信息分开的方法,将文件描述信息单独形成一个索引节点,简称i节点。文件目录中的每个目录项仅由文件名和指向该文件i节点的指针构成。
存放在磁盘上的索引节点称为磁盘索引节点,每个文件都有唯一的磁盘索引节点,主要包括:
- 文件主标识符:拥有该文件的个人或小组的标识符
- 文件类型:包括普通文件、目录文件或特别文件
- 文件存取权限:各类用户对该文件的存取权限
- 文件物理地址:每个索引节点以直接或间接方式给出数据文件所在盘块的编号
- 文件长度:以字节为单位的文件长度
- 文件链接计数:表明在本文件系统中所有指向该文件的文件名的指针数。
- 文件存取时间:本文件最近被存取的时间、最近被修改的时间以及索引节点最近被修改的时间。
当文件被打开时,磁盘索引节点被复制到内存的索引节点中,以便使用。存放在内存中的索引节点称为内存索引节点,其增加了以下内容:
- 索引节点编号:用于标识内存索引节点;
- 状态:指示i节点是否上锁或被修改;
- 访问计数:正在访问该文件的进程数;
- 逻辑设备号:文件所属文件系统的逻辑设备号;
- 链接指针:设置分别指向空闲链表和散列队列的指针。
3.单级目录结构
单级目录结构(或称为一级目录结构)是最简单的目录结构,在整个文件系统中,单级目录结构只建立一张目录表,每个文件占据其中的一个表目。
|
文件名 |
物理地址 |
文件说明 |
状态位 |
|
文件名1 | |||
|
文件名2 | |||
当建立一个新文件时,首先应确定该文件名在目录中是否唯一,若与已有文件名没有冲突,则从目录表中找出一个空表目,将新文件的相关信息填入其中。在删除文件时,系统先从目录表中找到该文件的目录项,从中找到该文件的物理地址,对文件占用的存储空间进行回收,然后再清除它所占用的目录项。当对文件进行访问时,系统先根据文件名去查找目录表以确定该文件是否存在,若文件存在,则找出文件的物理地址,进而完成对文件的操作。
单级目录结构的优点是易于实现,管理简单,但是存在以下缺点:
- 不允许文件重名。单级目录下的文件,不允许和另一个文件有相同的名字。但对于多用户系统来说,这又是很难避免的。即使是单用户环境,当文件数量很大时,也很难弄清到底有哪些文件,这就导致文件系统极难管理。
- 文件查找速度慢。对稍具规模的文件系统来说,由于其拥有大量的目录项,因此查找一个指定的目录项可能花费较长的时间。
4.二级目录结构
二级目录结构将文件目录分成主文件目录和用户文件目录。系统为每个用户建立一个单独的用户文件目录(user file directory,UFD),其中的表项登记了该用户建立的所有文件及其说明信息。主文件目录(Master File Directory,MFD)则记录系统中各个用户文件目录的情况,每个用户占一个表目,表目中包括用户名及相应用户目标所在的存储结构等。如图所示:
当用户要访问一个文件时,系统先根据用户名在主文件目录中查找该用户的文件目录,然后根据文件名在其用户文件目录中找出相应的目录项,从中找到该文件的物理地址,进而完成对文件的访问。
当用户要建立一个文件时,若为新用户,即主文件目录表中无此用户的相应登记项,则系统为其在主目录中分配一个表目,并为其分配存放用户文件目录的存储空间,同时在用户文件目录中为新文件分配一个表目,然后在表目中填入有关信息。
文件删除时,只需在用户文件目录中删除该文件的目录项。若删除后该用户目录表为空,则表明该用户已脱离了系统,从而可以将主文件目录表中该用户的对应项删除。
5.树形目录结构
在树形目录结构中,第一级目录称为根目录(树根),目录树中的非叶子节点均为目录文件(又称为子目录),叶子节点为文件。系统为每个文件赋予唯一的标识符(内部标识符),该标识符对用户是透明的。
树形目录结构引入以下概念:
- 路径名,在树形目录结构中,往往使用路径名来唯一标识文件。文件的路径名是一个字符串,该字符串从根目录出发到所找文件的通路上的所有目录名与数据文件名用分隔符“\"连接而成。从根目录出发的路径称为绝对路径,从当前目录开始直到文件为止的路径称为相对路径。
- 当前目录,当树形目录的层次较多时,如果每次都要使用完整的路径名来查找文件,会使用户感到不便,系统本身也需要花费很多时间进行目录搜索。为此应采取有效措施解决这一问题,考虑到一个进程在一段时间内所访问的文件通常具有局部性,因此可在这段时间内指定某个目录作为当前目录(或称为工作目录)。进程对各文件的访问都是相对于当前目录进行的,此时文件使用的路径名为相对路径。系统允许文件路径往上走,并用”..“表示给定目录的父目录。
还在学习中,持续未完~
本文详细介绍了操作系统中文件管理的相关知识,包括文件的组成结构、属性、操作,以及各种目录结构,如单级目录、二级目录和树形目录。重点讨论了文件控制块和索引节点在文件操作中的作用,阐述了文件的打开、关闭、创建、删除、读写等基本操作,并解释了如何通过文件名实现文件的按名存取和权限控制。

680

被折叠的 条评论
为什么被折叠?



