[操作系统] 文件系统基本概念

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/github_37129174/article/details/78749531

文件系统基本概念



1. 为什么要使用文件系统

所有的计算机应用程序都需要存储和检索信息。

  1. 由于存储容量受虚拟地址空间大小的限制,一些程序的地址空间不足以满足自己所需哟的信息。

  2. 在进程地址空间中保存的信息,当进程终止时,保存的信息也随之丢失。对于一些程序而言,这是不可接受的。

  3. 经常存在多个进程同时存取同一信息的情况。如果只在某个进程中保存一信息,那么其他进程就无法对它进行存取了。

因此,长期存储信息有三个基本要求:

  1. 能够存储大量信息
  2. 使用信息的进程终止时,信息仍旧存在
  3. 必须能使多个进程并发存取有关信息

现代计算机使用硬盘来实现长期存储,但在这个基础上,还存在一些问题

  1. 如何找到信息?
  2. 如何防止一个用户读取另一个用户的数据?
  3. 如果知道磁盘上哪些块是空闲的?

现代计算机使用新的抽象——文件来解决这个问题。

2. 什么是文件

文件是进程创建的信息逻辑单元,一个磁盘一般含有几千甚至几百万个文件,每个文件是独立于其他文件的。可以把一个文件看成一种地址空间。

进程可以读取已经存在的文件,也可以创建新的文件。存储在文件中的信息必须是持久的,不会因为进程的创建和终止而受到影响。

操作系统对文件进行管理,包括构造、命名、存取、使用、保护、实现和管理等。在操作系统中处理文件的部分称为文件系统。

3. 文件命名

文件是一种抽象系统,提供了在磁盘上保留信息并且读取的方法。在用户使用时,可能不了解文件存储方法,位置,实际工作方式。用户只需要知道文件名。

在进程创建文件时,它给文件命名。在晋城终止时,该文件依旧存在,并且其他进程可以通过这个文件名进行访问。

在许多操作系统中,支持将文件用”.”符号分为两部分,”.”后的一部分被称为扩展名,其中包括了文件的一些信息。

4. 文件结构

文件结构

  1. 无结构的字节序列
    操作系统把文件看成字节序列,用户可以向文件中假如任何内容,并以任何方式命名。操作系统不会提供帮助,也不会构成阻碍。

  2. 固定长度的记录序列
    文件是具有固定长度记录的序列,每个记录都有其内部结构。读操作返回一个记录,而写操作重写或追加一个记录。

  3. 记录树
    每个记录并不具有同样的长度,而记录的固定位置有一个“键”字段。树按“键”字段进行排序,从而可以对特定键进行快速查找。

5. 文件类型

UNIX和Windows中都有普通文件目录两种类型的文件,在UNIX中还有字符特殊文件和块特殊文件。

普通文件中包含有用户需要的信息。目录是管理文件系统结构的系统文件。

普通文件一般分为ASCII文件和二进制文件。

  1. ASCII文件
    由多行正文组成。在某些系统中,每行用回车符结束,其他系统则用换行符结束。文件中各行长度不一定相同。ASCII文件的最大优势是可以直接显示和打印,还可以使用任何文本编辑器进行编辑。如果很多程序都以ASCII文件作为输入输出,就很容易把一个程序的输出作为另一个程序的输入。

  2. 二进制文件
    打印出来的二进制文件是无法理解的,充满混乱字符的一张表。只用使用该文件的程序才能了解二进制文件的内部结构。不同格式的二进制文件可能具有不同的结构,如图所示为两种不同的二进制文件结构(不同格式的文件具有不同的扩展名)。
    二进制文件

6. 文件存取

  1. 顺序存取
    进程在系统中可从头顺序读取文件的全部字节或记录,但不能跳过任何内容,也不能不按顺序读取。可以返回起点,即可以多次读取。

  2. 随机存取
    可以不按顺序地读取文件中的字节或记录,或者按照关键字而不是位置来存取记录。对于一些程序很重要,如数据库系统,如果按顺序查找记录可能浪费很多时间。

7. 文件属性

除文件名和数据外,系统还会保存一些诸如创建时间、文件大小、创建者等信息,这些信息被称为属性。

8. 目录系统

文件系统通常提供目录或文件夹用于记录文件,在很多系统中目录本身也是文件,在这些系统中,目录是管理文件系统结构的系统文件。

  1. 一级目录系统

    在一个目录中包含所有文件,通常被称为根目录,但因为只有这一个目录,所以名称不重要。这一设计的优点在于简单, 可以快速定位文件(因为只有一层目录要查看)。

    一级目录系统

  2. 层次目录系统

    当用户有太多的文件时,一级目录变的很难寻找文件。所以需要一种层级结构(即目录树)。通过这种方式,用很多目录把文件分组。

    多级目录系统

9. 路径名

用目录树组织文件系统时,需要用指明文件名。

  1. 绝对路径名

    由从根目录到文件的路径组成。例如,路径/usr/ast/mailbox表示在根目录中有子目录usr,而usr中有子目录ast,文件mailbox在目录ast中,该方式中,路径名必须从根目录开始,且一定是惟一的。如果一个地址以分隔符开始(如”/”,”\”,”>”)那么这个路径就是绝对路径。

  2. 相对路径名

    常和工作目录(也称当前目录)一起使用。用户可以指令一个目录为当前目录,这时路径名可以相对工作目录开始。例如,当前工作目录为usr/ast,那么这时可以直接用mailbox来引用该文件。在这种情况下,/usr/ast/mailbox 与 mailbox是相等的。

绝对路径名的好处是,无论当前工作目录是什么,总能正常工作。相对路径的好处则是更加方便。

每个进程都有自己的工作目录,这样在进程改变工作目录并退出后,其他进程不会受到影响,文件系统中也不会有改变的痕迹。所以对于进程而言,切换工作目录是安全的。但是对于库过程,如果改变了它的工作目录,并且在工作完毕后没有改回去,那么其他程序有可能无法正常运行,因为他们关于当前目录的假设已经失效。

参考书目:现代操作系统第三版

没有更多推荐了,返回首页