操作系统期末复习——第4章:文件系统

目录

  • 第4章:文件系统
    • 概述
    • 4.1 文件
      • 4.1.1 文件命名
      • 4.1.2 文件结构
      • 4.1.3 文件类型
      • 4.1.4 文件访问
    • 4.2 目录
      • 4.2.1 一级目录系统
      • 4.2.2 二级目录系统
      • 4.2.3 层次目录系统
      • 4.2.4 路径名
    • 4.3文件系统的实现
      • 4.3.1 文件系统布局
      • 4.3.2 文件与磁盘
      • 4.3.3 ⭐文件的实现
      • 4.3.4 ⭐目录的实现
      • 4.3.5 ⭐共享文件
    • 4.4文件系统管理和优化
    • 4.4.1 ⭐磁盘空间管理
    • 4.4.2 ⭐文件系统备份(backup)
    • 4.4.3 ⭐文件系统的一致性
    • 4.4.4 文件系统性能
    • 4.5文件系统实例

第4章:文件系统

概述

  1. 长期存储信息的三要素

    1. 存储大量信息

    2. 进程终止时信息不丢失

    3. 允许多个进程并发访问

  2. 文件

    进程创建的信息逻辑单元,是信息存储单元,存储在辅存上的命名相关信息集合

  3. 文件系统

    1. OS中管理文件的部分,用于存储与组织文件及其所含数据的方法,便于查找和访问

    2. 基本功能

      • 展示文件和目录的逻辑(抽象)视图

      • 存储设备的高效使用与访问

      • 支持分享和保护

4.1 文件

4.1.1 文件命名

最多255个字符,字母、数字和特殊字符,区分大小写

4.1.2 文件结构

  1. 字节序列

  2. 记录序列

4.1.3 文件类型

  1. 普通文件:包含用户信息的文件

    • ASCII文件:用于显示、打印、编辑

    • 二进制文件:可执行文件和存档文件

  2. 目录:管理文件系统结构的系统文件

  3. UNIX

    • 字符特殊文件:和I/O有关,用于串行I/O设备,如打印机

    • 块特殊文件:用于磁盘类设备

4.1.4 文件访问

  1. 顺序访问

    • 从头开始读取所有字节/记录

    • 不能跳转,可以倒回或后退

    • 用磁带时很方便

  2. 随机访问

    • 任意顺序下读取字节

    • 对数据库系统很重要

    • 指定从何处开始读取的两种方法

      • 先读取数据,再移动文件标记

      • 先移动文件标记(通过 seek 操作),再读取数据(Unix和Windows)

4.2 目录

4.2.1 一级目录系统

一个目录包含所有文件

  1. 优点

    实现简单,容易理解

  2. 缺点

    • 命名问题

      • 所有文件名唯一
      • 名称冲突问题(同一分组的两个用户不能创建同名文件)
    • 分组问题

      • 大文件系统中难以记住文件名

4.2.2 二级目录系统

每个用户有独立目录

  1. 优点

    • 解决命名冲突

    • 搜索效率高

    • 支持文件共享和保护

  2. 缺点

    • 未解决分组问题

4.2.3 层次目录系统

  1. 叶节点是文件,内部节点是目录。每个用户有一个当前工作目录

    优点

    • 解决命名冲突

    • 搜索效率高

    • 实现文件共享和保护

    • 实现分组

  2. 一个点表示当前目录,两个点表示父目录

4.2.4 路径名

  1. Windows用\,UNIX用/,MULTICS用>

  2. 例子:当前目录的绝对路径是/home/user,寻找一个绝对路径为/home/user/bin/test.txt的文件

    • 相对路径:bin/test.txt<=>./bin/test.txt<=>../user/bin/test.txt

4.3文件系统的实现

4.3.1 文件系统布局

  1. MBR+分区表+磁盘分区

    每个磁盘分区 = 引导块 + 超级块 + 空闲空间管理 + i节点 + 根目录 + 文件和目录

  2. OS启动流程

    1. BIOS读取MBR

    2. MBR中程序找到活动分区

    3. 读取活动分区引导块

    4. 引导程序执行核心文件

4.3.2 文件与磁盘

  1. 文件

    1. 文件是连续的字节

      • 输入输出以字节为单位
    2. 文件系统定义块大小

      • 块大小=2^n*扇区大小

      • 连续的扇区组成块

    3. 文件系统将磁盘看作块的数组

      • 文件以块为单位分配空间

      • 文件系统管理空闲块

  2. 磁盘

磁盘是扇区数组

  • 输入输出以扇区为单位

  • 数据必须存储在扇区

4.3.3 ⭐文件的实现

  1. 连续分配

    1. 优点

      • 实现简单(仅需起始扇区号和文件长度)

      • 读写性能优异(适合顺序访问和直接访问)

    2. 缺点

      • 产生外部碎片(换进换出时文件大小可能不一致)

      • 文件创建时必须知道文件最大大小,否则文件无法增大

    3. 适合CD-ROM,DVD和其他一次性写入的光学介质

      • 文件大小预先确定

      • 文件不会删除

  2. 链表分配

    1. 每个块的第一个字指向下一个块的位置

    2. 优点

      • 没有外部碎片

      • 目录项简单(只需起始地址)

      • 只要有空闲块文件就可以继续增大

      • 适合顺序访问

    3. 缺点

      • 随机访问很慢(访问块号为n的块要从头遍历链表)

      • 块数据大小不是2的幂(指针占用)

    4. File Allocation Table

      1. 将块的指针字节放入索引表FAT

      2. 每个分区开头预留空间放FAT

      3. FAT保存在内存中,查找很快,但是可能占用巨大的内存空间

      4. FAT

        • 一个块有一个FAT项,按照块编号顺序排列

        • 每个块项包含下一个块的地址

      5. OS/2和MS-DOS系统使用

      6. 优点

        • 块利用率高,整个块可分配数据

        • 适合随机访问(只需遍历FAT)

        • 目录项简单(只需起始块号)

      7. 缺点

        FAT必须全部加载到内存

        • 若disk size=200GB,block size=1KB,FAT entry size=4bytes

        • 块数=200GB/1KB=200M,而一个块要一个FAT项,则FAT总大小=200M*4B=800MB

  3. i节点

    1. 每个块都有i节点,i节点存放文件属性和文件所有块的地址(指针)

    2. 只在对应文件文件打开时才将其i节点加载到内存,节省内存

    3. 多级索引分配(多级i节点)

      i节点的一个地址指向一个间接块,间接块的一个地址可以指向数据块地址或者继续指向下一个间接块地址

    4. 优点

      • 查找和随机访问快

      • 没有外部碎片

      • 仅在文件打开时才把i节点加载到内存,节省内存

    5. 缺点

      • 索引结构的开销

4.3.4 ⭐目录的实现

  1. 数据块存储目录项列表,目录项提供查找磁盘块所需的信息

  2. 文件属性的位置

    1. 存放在目录项

      • 目录项大小固定

      • 目录项包含磁盘地址和文件属性

      • MS-DOS和Windows使用

    2. 存放在独立数据结构(如i节点)

      • 目录项包含文件名和i节点号

      • i节点包含文件属性

      • Unix使用

  3. 长目录名问题

    1. 法1:固定长度文件名

      优点:最简单

      缺点:浪费空间

    2. 法2:可变长度目录项(定长+可变)

      优点:节省空间

      缺点

      • 文件删除产生外部碎片,需要压缩

      • 长目录项可能跨页,读取时引发page fault

    3. 法3:堆分配文件名(目录项定长,包含指向堆中文件名的指针)

      优点

      • 删除简单,无外部碎片,不用压缩

      • 不用填充字符

      缺点

      • 需要堆管理

      • 仍存在跨页问题

  4. 目录中搜索文件

    • 线性搜索

    • 哈希搜索

    • 缓存搜索

  5. 碎片

    • 外部碎片:还没分配出去的(如段、文件分配)

    • 内部碎片:已经分配出去,指明属于哪个进程(如块、页分配)

4.3.5 ⭐共享文件

  1. 共享文件之间的连接叫link,使文件系统成为有向无环图(DAG)

  2. 问题

    1. 冗余:目录若包含磁盘块地址,则目录A和B都要保存,存储浪费

    2. 不一致:B追加新块,可能C不更新

  3. 解决

    法1:硬链接

    • 所有目录指向同一i节点,共享同一i节点

    • 删除

      • i节点有一个引用计数器,统计指向该节点的文件目录的数量

      • 当计数器值为0时,回收块

      • 删除文件不影响硬链接(删除文件只是断开该文件与i节点的联系)

    • 限制

      • 跨文件系统限制(i节点号在同一文件系统唯一,跨文件可能冲突)

      • 硬链接目标文件移动到另一系统,系统会进行复制,并调整链接计数

      • 只有超级用户可以创建硬链接

    法2:符号链接

    • 创建LINK文件,内容是目标文件的路径名(相当于快捷方式)

    • 符号链接占用1个i节点和至少1个磁盘块

    • 删除

      • 当删除真实文件时,和普通文件删除一样,而符号链接仍存在但是会失效(broken)

        • 普通文件删除

          1. 移除目录项

          2. 块回收进空闲链表

      • 删除符号链接不会影响文件

    • 问题

      1. 额外的磁盘空间和额外i节点来存放link文件

      2. 路径解析的开销

      3. Dangling Link:当目标文件移动或删除,符号链接失效

      4. 转储到磁带时,可能会出现同一文件的多份拷贝

4.4文件系统管理和优化

4.4.1 ⭐磁盘空间管理

  1. 文件的两种分配策略

    1. 连续分配 - 分段式存储

      问题:文件增大时,需要把将文件在磁盘换进换出,开销大

    2. 分块分配 - 分页式存储

  2. 块大小

    1. 块大小=(2^n)*sector大小,块内扇区必须连续

    2. 大块

      • 优点:数据传输性能好

      • 缺点

        • 会产生内部碎片(平均浪费半个块)

        • 更低的磁盘利用率

        • 小文件会产生大量浪费

    3. 小块

      • 优点:更高的磁盘利用率

      • 缺点

        • 寻道次数更多,文件访问慢

        • 数据传输性能差

  3. 记录空闲块

    1. 法1:磁盘块链表

      • 把保存空闲块号的磁盘块用链表串起来

      • 改进:计数法。不保存一系列空闲磁盘块地址,而是保存第一个空闲块地址和空闲块总数。想知道每段连续块只要保存连续块的起始地址和连续空闲块数即可

    2. 法2:位图

      一个空闲块对应位图的一位

    3. :磁盘大小16GB,块大小1KB

      • 总共需要16GB/1KB=2^24个块

      • 磁盘链表(假设一个磁盘块号长度是32bits):一个块能存1KB/32bits=256个块号,其中有一个是指针,所以一个块能存255个块号。2^24/255=65793个保存空闲块号的磁盘块

      • 位图:需要2^24bits。而一个块大小是1KB,即2^13bits。总共需要2^24/2^13=2^11个位图块

4.4.2 ⭐文件系统备份(backup)

  1. 备份的目的

    • 从意外的灾难中恢复

    • 从错误的操作中恢复

  2. 备份的位置:三级存储(Tertiary Storage),如磁带

    • 优点

      • 空间大

      • 成本低

      • 适合顺序访问

    • 缺点

      • 随机访问性能差
  3. 备份的问题

    1. 备份的内容

      二进制程序,特殊I/O文件通常不备份。备份用户数据和配置文件

    2. 增量转储(dumpling)

      • 不备份上次备份后未修改的文件

      • 每月进行所有文件备份,每日进行修改的文件备份

    3. 写入磁带前压缩数据

    4. 备份在线活跃文件

      • 不可系统离线进行备份
  4. 转储的策略

    1. 物理转储

      从块0开始,按顺序把所有块写入磁带

      • 优点

        • 简单

        • 速度快

      • 缺点

        • 不能跳过特定目录

        • 不支持增量转储

        • 难以恢复单个文件

    2. 逻辑转储

      • 从一个或几个指定目录开始,递归地转储基准日期后有所更改的全部文件或目录

      • 优点:可以恢复特定文件或目录

4.4.3 ⭐文件系统的一致性

  1. 检查文件系统一致性的程序

    • Windows:scandisk

    • UNIX:fsck

  2. 一致性检查的类型

    1. 块的一致性检查

      • 建立引用计数表和空闲计数表

        • 表1:记录每个块被文件引用的次数

        • 表2:记录每个块是否在空闲链表

      • 不一致状态

        1. missing block:加入空闲链表

        2. duplicate block in free list:修正空闲链表

        3. duplicate data block:比如块1被文件A和B同时引用:分配新空闲块,将块1复制过去,把块1留给A,把块2给B。再通知用户错误

        4. 块归属冲突:从空闲链表移除

    2. 文件(目录)的一致性检查

      • 流程

        1. 使用文件计数器而非块计数器

        2. 从根目录开始递归向下遍历树结构,为每个文件(包括硬链接)增加计数

        3. 对比计数和i节点链接数量

      • 问题:引用计数器过大或过小

        解决:校正引用计数,让i节点的链接计数更改为实际目录数量

4.4.4 文件系统性能

  1. Caching

    减少磁盘 I/O 延迟

  2. 块提前读

    提高buffer cache命中率

  3. 减少磁盘臂移动

    避免寻道时间开销

4.5文件系统实例

  1. FAT-32较FAT-16的优点

    1. 支持更大的磁盘

    2. FAT-32分区更少

    3. 相同分区大小下,FAT-32使用更小的块

  2. UNIX V7文件系统

    • 使用多级索引分配

    • 读取文件操作

      • 先读取文件的i节点,再读取目录/块

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1125139.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GESP Python 编程一级教材之 10 掌握变量的创建及使用(教程含历年试题解析)

系列文章 《GESP系列教程之 什么是GESP?》 《GESP 认证标准之 Python 编程一级标准(考试大纲与要求含考试真题)》 《GESP 认证标准之 Python 编程二级标准(考试大纲与要求含考试真题)》 《GESP 认证标准之 Python 编程三级标准(考试大纲与要求含考试真题)》 《GESP …

微信小程序 PHP_uniapp的社区团购系统_1g4y216z

微信小程序社区团购系统概述 该系统基于PHP和UniApp技术栈开发&#xff0c;整合微信小程序前端与PHP后端&#xff0c;实现社区团购的完整业务流程。前端采用UniApp跨平台框架&#xff0c;兼容多端运行&#xff1b;后端使用PHP构建高效的数据接口&#xff0c;支持商品管理、订单…

GESP Python 编程一级教材之 11 掌握输入输出语句 input 和 print(教程含历年试题解析)

系列文章 《GESP系列教程之 什么是GESP?》 《GESP 认证标准之 Python 编程一级标准(考试大纲与要求含考试真题)》 《GESP 认证标准之 Python 编程二级标准(考试大纲与要求含考试真题)》 《GESP 认证标准之 Python 编程三级标准(考试大纲与要求含考试真题)》 《GESP …

6.1 Elasticsearch-Lucene 索引文件结构:tim、tip、doc、pos、pay

6.1 Elasticsearch-Lucene 索引文件结构&#xff1a;tim、tip、doc、pos、pay Elasticsearch 的搜索性能之所以能在 PB 级别数据量下仍保持毫秒级响应&#xff0c;核心依赖是 Lucene 的倒排索引文件格式。一个分片&#xff08;shard&#xff09;本质上就是 Lucene 的一个索引目…

GESP Python 编程一级教材之 12 神奇的画笔turtle绘图,掌握图形库 turtle 的主要功能,使用 turtle 进行绘图(教程含历年试题解析)

系列文章 《GESP系列教程之 什么是GESP?》 《GESP 认证标准之 Python 编程一级标准(考试大纲与要求含考试真题)》 《GESP 认证标准之 Python 编程二级标准(考试大纲与要求含考试真题)》 《GESP 认证标准之 Python 编程三级标准(考试大纲与要求含考试真题)》 《GESP …

微信小程序 PHP_uniapp的社区老人服务管理系统_lz9wo71q

微信小程序 PHP_uniapp 社区老人服务管理系统摘要 该系统基于微信小程序和 PHP_uniapp 技术栈开发&#xff0c;旨在为社区老年人提供便捷的线上服务管理平台。通过整合社区资源&#xff0c;实现服务需求对接、健康监测、活动组织等功能&#xff0c;提升老年人生活质量。 技术架…

GESP Python 编程一级教材之 13 掌握模块的导入方法(教程含历年试题解析)

系列文章 《GESP系列教程之 什么是GESP?》 《GESP 认证标准之 Python 编程一级标准(考试大纲与要求含考试真题)》 《GESP 认证标准之 Python 编程二级标准(考试大纲与要求含考试真题)》 《GESP 认证标准之 Python 编程三级标准(考试大纲与要求含考试真题)》 《GESP …

玫瑰克隆AI工具:深耕小红书生态的爆款创作赋能利器

玫瑰克隆AI工具的核心定位&#xff0c;是专为小红书内容生态打造的“爆款逻辑拆解原创内容赋能”AI辅助创作系统。它区别于泛用型AI文案工具&#xff0c;深耕小红书平台规则、用户偏好与流量机制&#xff0c;以技术驱动破解创作者的核心痛点&#xff0c;助力不同层级创作者从“…

论文复现:PMSM速度伺服系统的强化学习与最优控制

论文复现:PMSM速度伺服系统的强化学习与最优控制 以下是基于论文提出的控制策略的复现代码,包括模型建立、控制器设计、强化学习算法实现以及仿真验证。代码将分为以下几个部分: 系统建模与参数定义 快速电流环PI控制器 模型降阶与慢速子系统 最优速度环设计与LQR问题 强化…

爆火!9款AI论文工具实测,PaperNex维普一把过!

深夜&#xff0c;你的论文进度条还卡在10%&#xff1f;导师的夺命连环催即将到来&#xff0c;知网维普的查重高墙横亘在前。别慌&#xff0c;这篇2024年最新的“急救指南”&#xff0c;将为你揭秘9款实测有效的AI论文神器&#xff0c;特别是能让你在最后关头“一把过”的王牌工…

多智能体实战指南:9种模式打造高效AI应用

想要构建一个智能体应用&#xff0c;最重要的是什么&#xff1f;可能很多人首先会想到要选择一个性能强大的大模型。 这个回答没错&#xff0c;毕竟当前的LLM Based Agent哪能缺少LLM的支撑。但事实却是&#xff0c;很多基于先进大模型构建的智能体没能体现出应用效果&#xff…

微信小程序 PHP_uniapp的音乐播放器排行榜系统的设计与实现_5h11g380

微信小程序音乐播放器排行榜系统设计与实现 该系统基于微信小程序平台&#xff0c;采用PHP后端与Uniapp前端框架开发&#xff0c;实现了一个功能完善的音乐播放器排行榜系统。系统设计分为前端展示、后端数据处理和数据库管理三大模块。 前端采用Uniapp跨平台框架开发&#xff…

收藏必备!国产最强大模型GLM-4-Plus评测:打破国外垄断,三大场景解决程序员痛点!

本文介绍了智谱AI推出的GLM-4-Plus大模型&#xff0c;该模型在SuperBench评测中排名第三&#xff0c;打破了国外模型垄断前三的局面。文章详细展示了GLM-4-Plus如何帮助程序员解决代码编写、理解和错误排查三大痛点&#xff0c;介绍了其强大的文件分析功能&#xff0c;并讲解了…

收藏!80%的人正在浪费大模型革命!这份产品经理转型指南请务必收藏

文章揭示大模型产品领域现状&#xff1a;真正的"神级产品经理"尚未出现&#xff0c;而80%的人正在用错误方式转型。作者剖析了四种典型错误&#xff1a;传统C端思维套用ChatBot、迷信专家call而非实际建模、高管只做PMO不学模型、O2O老兵只关注KPI和投流。强调大模型…

微信小程序 PHP_uniapp校园外卖跑腿骑手在线接单系统 _f8zv38dg

系统概述 微信小程序 PHP_uniapp校园外卖跑腿骑单系统是一款基于Uniapp框架和PHP后端开发的校园生活服务应用&#xff0c;旨在为学生和骑手提供高效的外卖配送与跑腿服务。系统支持多端兼容&#xff08;微信小程序、H5、App&#xff09;&#xff0c;涵盖用户下单、骑手接单、订…

从零到 AI 产品经理:3 个必备技能缩短你的转型路径

不废话&#xff0c;直接上排期表&#xff1a;三天看“大盘”&#xff0c;把大模型这个行业的生态位、AI 产品经理的价值机会和类型搞清楚一星期“吃透”大模型底层原理&#xff1a;不学算法&#xff0c;但是必须懂模型怎么作业、应用方式和能力边界30 天每周跑通一个项目&#…

【Agent实战】Anthropic Skills、MCP与LangGraph的工程实践

摘要 随着大语言模型(LLM)应用从简单的Chatbot向自主智能体(Autonomous Agents)演进,如何管理复杂的任务上下文、标准化的工具调用以及确定性的业务流程,成为了系统设计的核心挑战。Anthropic 推出的 Skills 规范,结合 Model Context Protocol (MCP) 与 Function Calli…

传统PM转型大模型产品:避开90%人踩过的认知误区“ 解析

近期聊了不少希望转型大模型的PM&#xff0c;发现90%的人踩坑的真相是&#xff1a;用错方法论&#xff0c;把时间砸在错误方向。 一个很普遍的转型误区&#xff1a;技术思维陷阱**&#xff0c;觉得大模型高大上&#xff0c;先要了解算法底层逻辑才能入局**。然而2个转型实际案…

【读论文】ASR大模型动态热词新方案

摘要 大型语言模型(LLMs)以其卓越的通用知识和推理能力重塑了 AI 领域,但它们在处理特定领域或用户的专有词汇(即“热词”)时,往往表现出“选择性失忆”。传统的 RAG 或 Prompting 方案在实时性和准确性上存在瓶颈。阿里的《Hotword Model for Large Models》论文提出了…

中商旅游一卡通——打造国内惠民旅游领先平台

近年来&#xff0c;伴随着中国经济发展与居民生活水准的大幅度提升&#xff0c;旅游日益成为追求品质生活一族的首选休闲方式。放眼未来&#xff0c;在新的经济发展格局中&#xff0c;旅游业势必将作为中国的支柱产业&#xff0c;引领风骚&#xff0c;独树一帜&#xff0c;为全…