《操作系统是什么》一节讲过,操作系统是一款计算机系统软件,它具备很多功能,比如前面讲过的进程管理CPU 资源管理。本节,我们将带领您了解操作系统的文件管理功能,包括什么是文件、文件类型、文件的存储方式等等。

文件和文件系统

软件在执行过程中,很可能需要读取或者存储一些必要的数据。从操作系统的角度分析,想要实现成功地读、写数据,需要解决一些问题,比如:

  1. 每个进程只能利用自己的逻辑地址空间存储数据,且存储的数据量不能超过逻辑地址空间的大小;
  2. 进程消亡后,其使用的逻辑地址空间也会随时消失。这意味着,进程存储在逻辑地址空间中的数据无法长久保存;
  3. 在多道操作系统中,允许多个进程同时运行。由于每个进程只能将数据存储在自己的逻辑地址空间中,因此很难实现进程间的数据共享。

基于以上 3 个问题,数据的存取需要满足 3 个条件:

  1. 能够存储大量的数据;
  2. 支持长期甚至永久地保存数据;
  3. 多个进程可以访问同一份数据;

针对以上问题,操作系统的解决方案是:将每份数据以文件的形式存储在外存(硬盘、U盘等)中。

简单的理解,文件就是一些相关数据的集合体。计算机中可以存储很多种数据,包括图像数据、文本数据、多媒体(音频、视频)数据等,这些数据都各自以文件的形式存储在外存中,从而产生图像文件、文本文件、多媒体文件(音频文件、视频文件)等。

为了有效管理外存中的这些文件,操作系统新增了文件管理功能,专门负责管理文件,包括文件的存储、文件的读取等等。文件管理功能是操作系统的众多功能之一,我们习惯将这部分功能称为文件系统。

文件类型

根据不同的划分标准,文件系统中的文件可以划分为不同的类型,表 1 给您罗列了一些不同划分标准对应的文件类型。

表 1 文件类型
文件类型 分类
按用途分类 分为系统文件、库文件和用户文件。
按保存期限分类 分为临时文件和永久文件。
按文件的保护方式分类 分为只读文件、读写文件和可执行文件。
按数据流向分类 分为输入文件、输出文件和输入/输出文件。
按文件中保存的数据分类 分为源文件、目标文件和可执行文件。

文件存储方式

当用户或者软件存储某个文件时,文件系统负责分配足够的外存空间。常见的外存空间分配方式有 3 种,分别为连续分配、链接分配和索引分配。

1) 连续分配

所谓连续分配,文件系统会为每个文件分配连续的外存空间,系统只需要记录各个文件所在外存的首地址,即可轻松管理所有文件。

和其它分配方式相比,连续分配是最容易实现的一种存储文件的方式,以此方式存储的文件,顺序访问(后续会讲)的效率较高。连续分配方式的缺点也可明显,即每个文件都需要占用整块的存储空间,因此外存中一些零散的、容量小的存储空间将无法得到有效利用(成为碎片),降低了外存空间的利用率。

2) 链接分配

链接分配方式会将整个文件分成很多块,这些块分散存储在外存的各个区域。

为了保持文件的完整性,文件系统会为每个文件块配备一个指针,每个文件块的指针都指向下一个文件块所在的存储位置。由此,文件系统只需维护第一个文件块的指针,即可轻松找到存储的每个文件。

链接分配其实就是以链表的结构存储文件,因此文件的内容可以分散存储在外存的各个区域。

和连续分配方式相比,链接分配方式明显提高了外存空间的利用率,但顺序访问文件的效率不如前者。

3) 索引分配

和链接分配方式一样,索引分配方式也会将文件分散存储在外存不同的区域。不同之处在于,该方式会将每个文件块的存储位置记录在一张表中(又称索引表),而不是采用链表的方式。

也就是说,文件系统会为每个文件建立一张索引表,每张索引表会占用一块连续的存储空间,表中顺序记录着各个文件块的实际存储位置。文件系统只需要维护每个文件的索引表,即可管理系统中的所有文件。

索引分配方式将连续分配和链接分配的优点融于一身,既保证了外存的利用率,顺序访问文件的效率也很高。该分配方式的缺点是:当文件数量较多时,文件的索引表数量会很多,它们会占用一定的存储空间。

文件访问方式

常见的访问文件的方式有 3 种,分别称为顺序访问、随机访问和索引顺序访问。

1) 顺序访问

顺序访问指的是从文件的开头依次读取文件内容,直至读取完毕。顺序访问是大多数文件系统都会使用的文件访问方式。

为了实现对文件内容的读取,每个文件都维护有一个指针,其初始状态下指向文件中第一个数据所在的位置。当用户或者软件想读取文件时,指针会将其指向的数据提供给用户或软件,同时指向下一个数据,如此循环,直至读取完整个文件。

如今,很多文件系统都同时提供有顺序访问、随机访问和索引访问这 3 种文件访问方式,但由于多种文件(例如文本文件、音频文件、视频文件等)都需要以顺序访问的方式读取数据,因此顺序访问仍是最常用的文件访问方式。

2) 随机访问

随机访问又称直接访问,即直接读取文件中指定位置处的目标数据。

随机访问方式常用于数据库应用程序中,因为在此类程序中,用户常常需要略过某些数据(记录),直接查看目标数据(记录)。这种情况下,虽然使用顺序访问方式也能实现目的,但效率会大打折扣。

随机访问方式的实现,需要文件系统协助完成必要的任务,例如找到目标数据所在的存储位置。

3) 索引顺序访问

索引顺序访问方式适用于以索引分配方式存储的文件。

索引顺序访问方式指的是通过文件系统维护的各个文件的索引表,既可以顺序访问文件,还可以随机访问文件。在某些大型数据库中,借助索引访问方式,可以方便、快捷地找到目标数据。

发表回复