0%

文件管理

文件管理

概念

文件系统基础

  1. 文件的基本概念 - 以硬盘为载体的存储在计算机上的信息集合(系统运行时,计算机以进程为基本单位进行资源调度分配;用户输入输出中则以文件为基本单位)
  2. 文件的定义、属性与分类
  3. 文件控制块FCB与索引节点的概念(引入索引节点后,可使平均启动磁盘次数降低),其中2索引节点分为磁盘索引节点与内存索引节点
  4. 文件的操作 - 打开、关闭、读写等
    1. 其中文件打开过程如下
    2. 检索到指定文件目录项
    3. 将目录项从外存复制到内存打开文件表的一个表目
    4. 将该表目的索引号(文件描述符)返回给用户
    5. 只要文件完成了open()系统调用。后续的读写删除等操作就不再使用文件名而是文件描述符
  5. 文件的保护 - 访问类型、访问控制的定义,访问控制表的编写、
  6. 文件的逻辑结构
    1. 无结构文件 - 又称流式文件,是由字符流流构成的文件。对记录的访问只能使用穷举的方式
    2. 有结构文件 - 又称记录式文件,是由记录组成的文件。对记录的访问可以直接通过记录号进行访问
      1. 根据记录长度是否相等,分为定长记录和边长记录
      2. 根据记录的组织形式,分为顺序文件、索引文件和顺序索引文件
  7. 文件的物理结构
    总览
    https://img-blog.csdnimg.cn/927db922f7754dccbfec298c6ca9fda6.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAYmZob25vcg==,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center
    1. 连续分配 - 每个文件在磁盘中占有连续的块(易产生外部碎片)
    2. 链接分配 - 文件的各个数据块在物理上可以不连续,通过指针(或索引)将分散的块链接成一个链表,每个块中包含下一个块的地址(除最后一块)
      1. 隐式链接 - 每个数据块的末尾存储下一个块的物理地址,文件控制块(FCB)中记录第一个块和最后一个块的指针。
      2. 显式链接 - 用一张专门的表格(如文件分配表 FAT)记录每个块的下一个块地址,文件控制块中只需记录起始块号。
    3. 索引分配 - 为文件建立一个索引表,索引表中的每个索引项对应文件的一个数据块,索引项中记录数据块的物理地址。文件控制块中记录索引表的物理地址。
      1. 单级索引和多级索引的概念
      2. 混合索引的图示 https://img-blog.csdnimg.cn/a4dea68f141e4fada944ed22534c1ba8.png eg:

目录

  1. 目录的基本概念
  2. 目录结构 - 单级目录、两级目录、树形目录、无环图目录结构(即在树形目录中增加一些指向同一节点的有向边)
  3. 目录的实现与目录的基本操作
  4. 文件共享
    1. 基于索引节点 - 硬链接
      https://img-blog.csdnimg.cn/20201224214549733.jpeg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjcwODMyMQ==,size_16,color_FFFFFF,t_70#pic_center
    2. 利用符号链接 - 软链接
      https://img2023.cnblogs.com/blog/2804396/202304/2804396-20230412232722122-171818378.png
      只有文件的所有者才拥有指向其索引节点的指针,而共享该文件的其他用户只有该文件的路径名,并不拥有指向其索引节点的指针。这样就避免了指针悬空的问题。当文件拥有者删除原文件后,被共享者通过软链接访问失败,再将软链接删除

文件系统

  1. 文件系统的基本概念
  2. 合理的文件系统层次结构 - 应用程序->逻辑文件系统->文件组织模块->基本文件系统->I/O控制->设备
  3. 可能的文件系统布局
    https://img-blog.csdnimg.cn/53143f60f81049d492c131f597f28053.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTA3MTE0OTU=,size_16,color_FFFFFF,t_70
  4. 磁盘空闲空间管理方式
    1. 空闲表法 - 属于连续分配方式。建立一张空闲表,每个空闲分区对应一个空闲表项:其中包括表项序号、第一个空闲盘块号、空闲盘块数。
    2. 空闲盘块链 - 所有空闲空间以盘款为单位拉成一条链,每个盘块都有指向下一空闲盘块的指针
    3. 空闲盘区链 - 同上,但是被链接起来的是含有相邻盘块的盘区。每个盘区含有下个空闲盘区的指针和本盘区的盘块数
    4. 位示图法 - 用一个m × n的位示图来表示磁盘上的盘块是否空闲。每个盘块对应位示图中的一个位,0表示空闲,1表示已占用
    5. 成组链接法 - 就是把空闲盘块分组。每组的第一个盘块作为索引快,记录下一个分组的空闲盘块总数和空闲盘块号(最后一个分组的第一个盘块为0),然后把每组的第一个盘块串成一条链
      1. 空闲块分配(释放给文件使用)
        1. 从内存的空闲块栈中取出一个空闲块号,分配给文件;
        2. 若分配后栈中仍有空闲块(且不止 1 个),则分配结束;
        3. 若分配后栈中只剩最后 1 个块(该块是当前组的索引块,存储下一组信息):
          1. 将该索引块从磁盘读入内存,作为新的 “空闲块栈”(包含下一组的块数和块号);
          2. 释放原索引块(因其已不再是空闲块的索引,而是被 “消耗”)。
      2. 空闲块回收
        1. 将回收的块号加入内存的空闲块栈;
        2. 若加入后栈中块数未达到每组上限(如 100 块),则回收结束;
        3. 若加入后栈中块数达到上限(如 100 块):
          1. 将当前栈中的信息(块数 100,块号 1~99)写入新回收的块(设为块 100),使其成为新的 “索引块”;
          2. 内存栈清空,仅保留新索引块(块 100)的信息(n=1,块号 100); 原 100 块(1~100)成为一个新组,块 100 指向之前的组。
  5. 虚拟文件系统的定义与操作,抽象了四种对象类型
    1. 超级块对象(Superblock)
      定义:表示一个已挂载的文件系统的全局信息,是文件系统在内存中的抽象表示。
    2. 索引节点对象(Inode)
      定义:表示一个文件或目录的元数据,是文件在内存中的抽象表示。
    3. 目录项对象(Dentry)
      定义:表示一个特定的目录项表示路径名的一个组成部分(如/home/user/file.txt中的home、user、file.txt),是路径解析的中间结果。
    4. 文件对象(File)
      定义:表示一个打开的文件描述符,是进程与文件交互的抽象表示。
  6. 文件系统挂载的操作命令