第4章 文件管理

王道学习

考纲内容

(一)文件

文件的基本概念:文件元数据和索引节点(inode)

文件的操作:建立,删除,打开,关闭,读,写

文件的保护;文件的逻辑结构;文件的物理结构

(二)目录

目录的基本概念;树形目录;目录的操作;硬链接和软链接

(三)文件系统

文件系统的全局结构(layout):文件系统在外存中的结构,文件系统在内存中的结构

外存空闲空间管理办法;虚拟文件系统;文件系统挂载(mounting)

复习提示

本章内容较为具体,要注意对概念的理解。重点掌握文件系统的结构及其实现、文件分配和空闲空间管理等。要掌握文件系统的文件控制块、物理分配方法、索引结构、树形目录结构、文件共享原理、文件系统的布局、虚拟文件系统原理等。这些都是统考真题容易考査的内容。

4.1 文件的基本概念

文件(File)是以硬盘为载体的存储在计算机上的信息集合,文件可以是文本文档、图片、程序等。在系统运行时,计算机以进程为基本单位进行资源的调度和分配;而用户进行的输入、输出中,则以文件为基本的单位 。大多数应用程序的输入都是通过文件来实现的,其输出也都保存在文件中,以便信息的长期存储及将来的访问。当用户将文件用于程序的输入、输出时,还希望可以访问、修改和保存文件等,实现对文件的维护管理,这就需要系统提供一个文件管理系统,操作系统中的文件系统(File System)就是用于实现用户的这些管理要求的。

要清晰地理解文件的概念,就要了解文件究竟由哪些东西组成。













4.2 文件的逻辑结构

无结构文件

有结构文件



顺序文件



索引文件

索引顺序文件




直接文件或散列文件(Hash File)



4.3 文件的物理结构(文件分配方式)

前面说过,文件实际上是一种抽象数据类型,我们要研究它的逻辑结构、物理结构,以及关于它的一系列操作。文件的物理结构就是研究文件的实现,即文件数据在物理存储设备上是如何分布和组织的。同一个问题有两个方面的回答:一个是文件的分配方式,讲的是对磁盘非空闲块的管理;二是文件存储空间管理,讲的是对磁盘空闲块的管理(详见4.3节)。

文件分配对应于文件的物理结构,是指如何为文件分配磁盘块。常用的文分配方法有三种:连续分配、链接分配和索引分配。注意与文件的逻辑结构区分,从历年的经验来看,这是很多读者容易搞混的地方(读者复习完数据结构后,可以类比线性表、顺序表和链表之间的关系)。

类似于内存分页,磁盘中德存储单元也被分为一个个的块,称为磁盘块,其大小通常与内存的页面大小相同。内存与磁盘之间的数据交换(磁盘I/O)都是以块为单位进行的。



连续分配






链接分配









索引分配















4.4 目录的基本概念

FCB的有序集合称为文件目录,一个FCB就是一个文件目录项。与文件管理系统和文件集合相关联的是文件目录,它包括有关文件的属性、位置和所有权等。

首先来看目录管理的基本要求:从用户的角度看,目录在用户(应用程序)所需要的文件名和文件之间提供一种映射,所以目录管理要实现"按名存取";目录存取的效率直接影响到系统的性能,所以要提高对目录的检索速度;在多用户系统中,应允许多个用户共享一个文件,因此目录还需要提供用于控制访问文件的信息。此外,应允许不同用户对不同文件采用相同的文件,以便于用户按自己的习惯给文件命名,目录管理通过树形结构来解决和实现。

4.5 文件控制块和索引节点







4.6 目录结构

单级目录结构

两级目录结构

树形目录结构

通常,每个用户都有各自的"当前目录",登陆后自动进入该用户的"当前目录"。OS提供一个专门的系统调用,供用户随时改变"当前目录"。例如,在UNIX系统中,"/etc/passwd"文件就包含有用户登录时默认的"当前目录",可用cd命令改变"当前目录"。

树形目录结构可以很方便地对文件进行分类,层次结构清晰,也能够更有效地进行文件的管理和保护。在树形目录中,不同性质、不同用户的文件,可以分贝呈现在系统目录树的不同层次或不同树中,很容易地赋予不同的存取权限。但是,在树形目录中查找一个文件,需要按路径名逐级访问中间节点,增加了磁盘访问次数,这无疑会影响查询速度。目前,大多数OS如UNIX、Linux和Windows系统都采用了树形文件目录。


无环图目录结构

4.无环图目录结构

树形目录结构能便于实现文件分类,但不便于实现文件共享,为此在树形目录结构的基础上增加一些指向同一节点的有向变,使整个目录成为一个有向无环图,如图4.15所示。这种结构允许目录共享子目录或文件,同一个文件或子目录可以出现在两个或多个目录中。

当某用户要求删除一个共享节点时,若系统只是简单地将它删除,则当另一个共享用户需要访问时,会因无法找到这个文件而发生错误。为此,可为每个共享节点设置一个共享计数器,每当图中增加对该节点的共享链时,计数器加1;每当某用户提出删除该节点时,计数器减1。仅当共享计数器为0时,才真正删除该节点,否则仅删除请求用户的共享链。

无环图目录结构方便地实现了文件的共享,但使得系统的管理变得更加负责。

4.7 文件存储空间管理


存储空间的划分与初始化

空闲表法


空闲链表法



位示图法


成组链接法















4.8 文件基本操作









4.9 文件共享





4.10 文件保护







4.11 文件系统的层次结构


逻辑文件系统与文件信息缓冲区:可参照文件逻辑的结构的索引文件, 采用此方法需要先将索引表调入内存

4.12 文件系统布局





i结点区存放的是索引结点,i结点区是一个数组,存放的是索引结点

4.13 虚拟文件系统&文件系统挂载(安装)







相关推荐
周珂呀3 天前
Linux 命令行学习:数据流控制、文本处理、文件管理与自动化脚本 (第二天)
linux·前端·chrome·操作系统·终端·基础知识
编程老船长4 天前
献给刚入学的大学生-如何使用微PE工具箱或其他工具制作 Windows 11 U 盘启动盘
windows·操作系统
Eloudy4 天前
关注 dlopen(handle, mode) 中的 mode,dlsym dlclose示例
操作系统·动态库
_小猪沉塘5 天前
【哈工大_操作系统理论】L26&27 IO与显示器&键盘
操作系统
昵称p5 天前
lvgl
mcu·mqtt·操作系统·lvgl·任务创建
Harper. Lee6 天前
【OS】2.1.2 进程的状态与转换_进程的组织
笔记·操作系统·os·1024程序员节
tt5555555555556 天前
操作系统学习笔记2.3互斥
笔记·操作系统·1024程序员节
碳苯6 天前
【rCore OS 开源操作系统】Rust trait 特性快速上手
开发语言·人工智能·后端·rust·操作系统·trait