本文已收录至 Github(MD-Notes),若博客中有图片打不开,可以来我的 Github 仓库:https://github.com/HanquanHq/MD-Notes,涵盖了互联网大厂面试必问的知识点,讲解透彻,长期更新中,欢迎一起学习探讨。
面试必会系列专栏:https://blog.csdn.net/sinat_42483341/category_10300357.html
操作系统系列专栏:https://blog.csdn.net/sinat_42483341/category_10519484.html


第四章 文件管理1 - 文件系统

目录

  • 第四章 文件管理1 - 文件系统
    • 文件基础知识
      • 文件的属性
      • 操作系统提供的系统调用
    • 文件的逻辑结构 / 物理结构
      • 文件的逻辑结构
      • 文件的物理结构(文件分配方式)
        • 连续分配
        • 链接分配
        • 索引分配
    • 文件目录
      • 文件控制块 FCB
      • 索引结点(FCB的改进)
    • 文件存储空间管理
      • 空闲表法
      • 空闲链表法
      • 位示图法
      • 成组链接法
    • 文件共享
      • 硬链接:基于索引结点的共享方式
      • 软链接:基于符号链的共享方式
      • 共性
    • 文件保护
      • 口令保护
      • 加密保护
      • 访问控制
    • 文件系统的层次结构
    • 补充:文件系统实例

文件基础知识

文件的属性

文件名、标识符、类型、位置、大小、保护信息 …

操作系统提供的系统调用

  • 创建文件:create
  • 读文件:read
    • 从外存读入内存
  • 写文件:write
    • 从内存写回外存
  • 删除文件:delete
  • 打开文件:open
    • 将目录项中的信息复制到打开文件表中,并将打开文件表的索引号(文件描述符)返回给用户
    • 打开文件之后,堆文件的操作不需要每一次都查询目录,可以根据内存中的打开文件表进行操作
    • 每个进程有自己的打开文件表(包含读写指针、访问权限…)
    • 操作系统有一张总打开文件表(包含打开计数器…)
  • 关闭文件:close
    • 将进程打开文件表中的相应表项删除
    • 系统打开文件表的打开计数器 -1,如果为 0,则删除表项
  • 复制文件
    • 使用 create + read + write 的组合实现

文件的逻辑结构 / 物理结构

物理结构:操作系统角度,文件数据如何存放在外存中

逻辑结构:用户角度,文件内部数据如何组织

文件的逻辑结构

  • 无结构文件:二进制字符流,流式文件。例如:记事本文件

  • 有结构文件记录 是一组 数据项 的集合。例如:数据库表

    根据 各条记录长度是否相等,分为:

    • 定长记录(可以随机存取)
    • 可变长记录(无法随机存取)

    根据 有结构文件的逻辑结构,分为:

    • 顺序文件:采用顺序存储(可以随机存取)/ 链式存储(无法随机存取)。

      根据 记录是否按关键字有序 排列,分为串结构(无序)/ 顺序结构(有序)

    • 索引文件:建立一张 索引表,每个记录对应一个表项。

      可以用不同的数据项 建立多个索引表,例如:id, username 分别作为索引

    • 索引顺序文件:将记录分组,一组记录 对应 一个索引表项。检索时,先顺序查索引表,找到分组,再顺序查找分组。可以建立多级索引顺序文件。

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

连续分配

每个文件在磁盘上占有一组连续的块。支持顺序访问 / 随机访问

链接分配
  • 隐式链接:目录中存放 文件名、起始块号、结束块号,每个磁盘块中保存下一个盘块的指针。不支持随机访问。
  • 显式链接:目录中存放 文件名、起始块号,操作系统维护 FAT 文件分配表 <物理块号,下一块>。支持随机访问。
索引分配

每个文件建立一张索引表。

  • 链接方案:一个索引块装不下,可以将多个索引块链接起来存放。

  • 多级索引:建立多层索引,使第一层索引块指向第二层的索引块,类推。

  • 混合索引:顶级索引表中包含 直接地址索引(直接指向数据块)、一级间接索引、两级间接索引。对于小文件来说,访问一个数据块所需的读磁盘次数更少。

区分:FAT 是一个磁盘对应一张,索引表是一个文件对应一张。

文件目录

文件控制块 FCB

FCB 的有序集合称为 “文件目录”,FCB 实现了 文件名文件 的映射。FCB 中包含:

  • 文件的基本信息(文件名、物理地址、逻辑结构、物理结构等)
  • 存取控制信息(是否可读/可写、禁止访问的用户名单等)
  • 使用信息(如文件的建立时间、修改时间等)
  • 文件名、文件物理地址

需要对目录进行的操作:

  • 搜索:当用户要使用一个文件时,系统要根据文件名搜索目录,找到该文件对应的目录项
  • 创建文件:增加目录项
  • 删除文件:删除目录项
  • 显示目录:用户请求显示目录的内容,如:所有文件、相应属性
  • 修改目录:保存在目录中的文件属性变化,如:文件重命名

目录结构

  • 单级目录结构:不允许文件重名
  • 两级目录结构:允许不同用户的文件重名
  • 多级目录结构:又称树形目录结构,不同目录下的文件可以重名
  • 无环图目录结构:整个目录成为一个有向无环图,方便用户间文件共享。每个共享结点设置一个共享计数器,有共享计数器减为 0 时,才删除结点。

索引结点(FCB的改进)

原有的文件目录表项:

将冗余信息放在索引节点中:节省空间,减少 IO 次数,提升文件检索速度

找到文件名对应的目录项后,才需要将索引结点调入内存,然后根据“存放位置”即可找到文件。

文件存储空间管理

操作系统需要对磁盘块进行哪些管理:

  • 对非空闲磁盘块的管理:(文件的物理结构)连续分配、链接分配、索引分配
  • 对空闲磁盘块的管理:空闲表法、空闲链表法(空闲盘快链 / 空闲盘区链)、位示图法、成组链接法
空闲表法

空闲链表法

空闲盘快链:以盘区为单位组成一条空闲链

空闲盘区链:以盘区为单位组成一条空闲链

位示图法

要能自己推出盘块号与(字号,位号)相互转换的公式:若n表示字长,则

(字号,位号)=(i, j)的二进制位对应的盘块号b = ni + j

b号盘块对应的字号i = b/n,位号j = b%n

成组链接法

UNIX 采用的策略,适合大型文件系统

文件共享

硬链接:基于索引结点的共享方式

  • 两个变量名指向了同一个物理位置,硬链接的文件拥有相同的 inode。操作系统靠 inode 来区分文件的,2 个 inode 相同的文件,代表它们是同一个文件。
  • 如果删掉了其中一个文件,另外一方还能找到这个文件。相当于只是删除了一个引用。
  • 若 count > 0,说明还有别的用户要使用该文件。除非你把硬链接和源文件都删除,count 值变为 0,这个文件才被真正删除。

软链接:基于符号链的共享方式

  • 软链接是两个独立的文件,相当于创建了一个 快捷方式
  • 文件的共享用户只有该文件的 路径名,只有文件拥有者才拥有 指向其索引节点的指针
  • 若符号链接被删除,不影响源文件。若源文件被删除,符号链接仍然存在,但找不到源文件了,会标红报错。
  • 软链接有 自己的 inode 号 以及用户数据块
  • 软链接可跨文件系统,硬链接不行
  • 通过软链接方式访问共享文件时,要查询多级目录,会有多次磁盘 IO,因此比硬链接慢

共性

  • 无论是硬链接还是软连接,如果修改任意一方,另外一个文件也会看到这个变化。

文件保护

口令保护

为文件设置一个“口令”(如:abc112233),用户请求访问该文件时必须提供“口令”。口令一般存放在文件对应的FCB或索引结点中。

缺点:正确的“口令”存放在系统内部,不够安全。

加密保护

使用某个“密码”对文件进行加密,在访问文件时需要提供正确的“密码”才能对文件进行正确的解密。

缺点:编码/译码,或者说加密/解密要花费一定时间。

Eg:一个最简单的加密算法——异或加密,假设用于加密 / 解密的 “密码” 为“01001”

访问控制

在每个文件的FCB(或索引结点)中增加一个访问控制列表(Access-Control List, ACL),该表中记录了各个用户可以对该文件执行哪些操作。

精简的访问列表:以“组”为单位,标记各“组”用户可以对文件执行哪些操作。

如:分为系统管理员、文件主、文件主的伙伴、其他用户几个分组。当某用户想要访问文件时,系统会检查该用户所属的分组是否有相应的访问权限。

文件系统的层次结构

补充:文件系统实例


操作系统:第四章 文件管理1 - 文件逻辑结构,物理结构,文件目录,软硬连接,文件系统相关推荐

  1. (王道408考研操作系统)第四章文件管理-第一节3:文件目录

    文章目录 一:引入(以Linux为例) (1)Linux一切皆文件 (2)区别目录项和目录 (3)索引结点.目录项和文件数据的关系 二:文件控制块和索引结点 (1)文件控制块 (2)索引结点 三:目录 ...

  2. (王道408考研操作系统)第四章文件管理-第一节7:文件共享

    文章目录 一:基于索引结点的共享方式(硬链接) (1)介绍 (2)Linux演示 二:基于符号链的共享方式(软链接) (1)介绍 (2)Linux演示 所谓文件共享就是指 使多个用户(进程)共享同一个 ...

  3. 操作系统第四章-文件管理

    写在前面:本文参考王道论坛的 操作系统考研复习指导单科书 文章目录 第四章 文件管理 4.1 内存管理概念 4.1.1 文件的概念 4.1.2 文件的逻辑结构 1. 无结构文件(流式文件) 2.有结构 ...

  4. 14 操作系统第四章 文件管理 文件逻辑结构 文件目录结构

    文章目录 1 初识文件管理 1.1文件属性 1.2 文件内部的数据应该怎样组织起来? 1.3 文件之间应该怎样组织起来? 1.4 操作系统应该向上提供哪些功能? 1.5 文件应如何存放在外存? 1.6 ...

  5. 16 操作系统第四章 文件管理 文件的基本操作 文件共享 文件保护 文件系统的层次结构

    文章目录 1 文件的基本操作 1.1 创建文件 1.2 删除文件 1.3 打开文件 1.4 关闭文件 1.5 读文件 1.6 写文件 1.7 文件基本操作小结 2 文件共享 2.1 基于索引结点的共享 ...

  6. 15 操作系统第四章 文件管理 文件的物理结构 文件存储空间管理

    文章目录 1 文件的物理结构 (文件分配方式) 1.1 文件块.磁盘块 1.2 文件分配方式--连续分配 1.3 文件分配方式--链接分配 1.3.1 链接分配--隐式链接 1.3.2 链接分配--显 ...

  7. (王道408考研操作系统)第四章文件管理-第一节4:文件物理结构(文件分配方式)

    文章目录 一:连续分配 二:链接分配 A:隐式链接 B:显式链接 三:索引分配 (1)基本概念 (2)一个问题 A:链接方案 B:多层索引 C:混合索引 文件分配方式大总结 文件的物理结构是指如何为文 ...

  8. 操作系统 第四章 文件管理

    4.1 文件系统基础 所谓文件,指的是以计算机硬盘为载体的存储在计算机上的信息的集合.系统运行时,计算机以进程为基本单位进行资源的分配调度,而在用户的输入输出时则以文件为基本单位. 可以采取自底向上的 ...

  9. (王道408考研操作系统)第四章文件管理-第一节2:文件的逻辑结构

    文章目录 一:无结构文件 二:有结构文件 (1)顺序文件 (2)索引文件 (3)索引顺序文件 和数据结构中的逻辑结构与物理结构一样,文件也具有逻辑结构和物理结构 逻辑结构:从用户角度看,文件内部的数据 ...

最新文章

  1. 重磅!Nature子刊发布稳定学习观点论文:建立因果推理和机器学习的共识基础...
  2. 【Laravel】连接sqlite,Database [] not configured,sqlite example
  3. 牛客网_PAT乙级1001_A+B和C (15)
  4. 黄聪:wordpress如何开启文章格式post format
  5. TypeScript 中类型 any,void,unknown,never之间的区别
  6. 【java基础知识】Spring Boot启动报错com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectExcepti
  7. 动态排名系统(整体二分)
  8. 设置元素浮动的几种方式
  9. python email模块详解_Python使用email模块对邮件进行编码和解码的实例教程
  10. Linux常用远程连接工具介绍,总有一款适合你
  11. 以太网协议号字段定义
  12. 第三届泰迪杯全国大学生数据挖掘竞赛通知
  13. 2021年高压电工考试题及高压电工模拟考试
  14. windows软链接
  15. Mac怎么切换主显示器 Mac设置主显示器
  16. 四级英语口语模拟测试软件,英语四级口语模拟题:非常有用
  17. 外置MOS 开关型 PWM调光 降压恒流驱动芯片
  18. java基于ssm+vue的的KTV点歌歌曲播放系统 element
  19. NAT、SNAT、DNAT
  20. win10系统下如何打开bios如何打开Intel-VT-x教程

热门文章

  1. CodeForces - 622C Not Equal on a Segment(思维+水题)
  2. 高精度运算模板(大数模板)
  3. POJ - 4045 Power Station(树形dp/树的重心)
  4. 获取网络时间并刷新本地时间(源码2)
  5. 神器 JMH + Arthas 性能监控
  6. 从 DevOps 到 Serverless
  7. IntelliJ IDEA 2019.3要起飞了,主要解决这些痛点...
  8. Go 语言能取代 Java,成为下一个 10 年的王者吗?
  9. 蔡砚刚:uAVS3对标x265 veryslow将节省30%码率
  10. QUIC DataChannels的第一步