四、文件管理(三)文件系统

news2024/9/22 19:36:39

目录

3.1文件系统结构

3.2文件系统布局 

3.2.1文件系统在外存中的结构

3.2.2文件系统在内存中的结构

3.3外存空闲空间管理

3.3.1空闲表法

3.3.2空闲链表法

3.3.3位示图法

 3.3.4成组链接法

3.4虚拟文件系统

3.5文件系统挂载(mounting)


 

3.1文件系统结构

从不同的角度出发有很多种文件层次结构图,但其基本功能基本一致。 

3.2文件系统布局 

3.2.1文件系统在外存中的结构

这部分内容与操作系统引导类似,文件系统也是操作系统的一部分。 

  • 主引导记录(MBR),位于磁盘的0号扇区,操作系统的引导步骤为:主存的ROM中的BIOS→MBR→扫描分区表→PBR。
  • 引导块:每个分区都从一个引导块开始,负责启动该分区中的操作系统。
  • 超级块:包含文件系统的所有关键信息,计算机启动时读入内存。典型信息有分区的块数量及大小、空闲块的数量和指针、空闲的FCB数量和FCB指针。
  • 文件系统的空闲块信息可以使用位示图或空闲链表法等形式给出。可以使用索引结点进行优化。最后磁盘中还存放着所有目录和除目录之外的文件

3.2.2文件系统在内存中的结构

内存中的信息用于管理文件系统并通过缓存(cache)来提高性能。这些数据在安装文件系统时被加载,在文件系统操作期间被更新,在卸载时被丢弃。这些结构可能包括:

  • 内存中的安装表(mount table),包含每个已安装文件系统分区的有关信息。
  • 内存中的目录结构的缓存包含最近访问目录的信息。对安装分区的目录,它可以包括一个指向分区表的指针。
  • 整个系统的打开文件表,包含每个打开文件的FCB副本及其他信息。
  • 每个进程的打开文件表,包括一个指向整个系统的打开文件表中的适当条目的指针,以及其他信息。

 进程的打开文件表的索引号也称“文件描述符”,“文件句柄”(对应UNIX和Windows)

3.3外存空闲空间管理

 一个磁盘划分成多个文件卷(C盘、D盘)或多个磁盘组成一个文件卷(逻辑卷、逻辑盘)。文件卷包括目录区文件区

3.3.1空闲表法

适用连续分配方式,其基本思想和动态分区分配一致,相似问题也有空闲盘区的分配算法(首次适应算法、最佳适应算法、最坏适应算法等)、回收盘区后空闲盘块表的更改等问题。

3.3.2空闲链表法

  • 空闲盘块链:以盘块为单位,每一个空闲盘块记录下一个空闲盘块的指针。 
  • 空闲盘区链:以盘区(几个相邻的空闲盘块)为单位,每一个空闲盘区的首盘块记录下一个空闲盘区的指针和此盘区的长度。 

 操作系统保存着链头链尾指针

3.3.3位示图法

 一个二进制位代表一个盘块(0为空闲)。

注意题中的字号与位号是不是从0开始编号。

 3.3.4成组链接法

空闲表法和空闲链表法都不适用于大型文件系统,因为会使空闲表或空闲链表过大。UNIX中采用了成组链接法。

  • 超级块存在于文件卷目录区,在开机时读入内存。
  • 橙色部分表示下一组的空闲盘块数目。这一组的其中一个空闲盘块(如300)用来保存下下一组的空闲盘块信息。若没有下一组空闲盘块则盘块号设为-1。
  • 分配时如果出现当前组空闲盘块数不够的问题需要把下一个超级块复制到当前超级块,以此类推。
  • 回收时如果出现当前组空闲盘数量超出的问题需要把当前超级块复制到新回收的块,当前超级块更改内容。

3.4虚拟文件系统

操作系统中可能存在不同的文件系统,如Linux的ext3、ext2、vfat等。文件之间通过系统调用来实现跨文件系统操作。

虚拟文件系统(VFS,Virtual File System)为用户程序提供了文件系统操作的统一接口。严格说来,VFS并不是一种实际的文件系统。它只存在于内存中,不存在于任何外存空间。VFS在系统启动时建立,在系统关闭时消亡。 

 为了实现VFS,Linus主要抽象了四种对象类型。

  • 在处理文件时,应用程序和内核空间使用的对象不同
  • 应用程序:打开文件时内核为其进程分配一个打开文件表的索引号(文件描述符),文件的读写等操作均通过该索引号进行。
  • 内核空间:一个索引结点对应一个文件,该inode可能对应应用程序的多个进程的多个文件描述符。

3.5文件系统挂载(mounting)

文件系统在进程使用前必须先安装,也称挂载

Window或MAC操作系统自动挂载创建的文件系统,Linux需要手动挂载,或者配置系统后自动挂载(编辑/etc/fstab文件)

mount:VFS的挂载描述符; umount:卸载文件系统操作,保存文件,退出挂载点/挂载目录后才可执行。

 

 

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

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

相关文章

柚子是肝病“催化剂”吗?医生:滋养肝细胞,5种水果或可常吃

人体就像是一台大型的机器,五脏六腑就像是机器里的重要组成部分,血管是为五脏六腑输送机油的管道,骨骼是机器的整体框架等,它们彼此之间互相配合,机器才能够正常运转。 如果其中一个构造受损了,那么会影响到…

2023最新SSM计算机毕业设计选题大全(附源码+LW)之java散酒营销系统w5at6

对于计算机专业的学生最头疼的就是临近毕业时的毕业设计,对于如何选题,技术选型等这些问题,难道了大部分人,确实,还没毕业的学生对于这些问题还比较陌生,只有学习的理论知识,没有实战经验怎么能独自完成毕业设计这一系列的流程,今天我们就聊聊如何快速应对这一难题. 比较容易的…

第二证券|元宇宙赛道西北首个“吃螃蟹者”入场

元世界展开势头一浪高过一浪之际,地处西北的咸阳高新区也下决心参加这场比赛。 近来,咸阳高新区管委会发布《咸阳高新区元世界工业先行区举动方案》,对行将打出的元世界“先手牌”从多个维度予以规划。 值得关注的是,外界印象中&…

iOS视频流采集概述(AVCaptureSession)

需求:需要采集到视频帧数据从而可以进行一系列处理(如: 裁剪,旋转,美颜,特效....). 所以,必须采集到视频帧数据. 阅读前提: 使用AVFoundation框架 采集音视频帧数据 Overview AVCaptureSession:使用相机或麦克风实时采集音视频…

Java编程实战12:解数独

目录解数独题目示例 1提示解答解题思路完整代码解数独 题目 编写一个程序,通过填充空格来解决数独问题。 数独的解法需 遵循如下规则: 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能…

1553_AURIX_TC275_CCU寄存器以及模块的独立时钟生成

全部学习汇总: GreyZhang/g_TC275: happy hacking for TC275! (github.com) 这里的BBB时钟应该是前面看到的调试时钟,BBB比较醒目,不过暂且不知道这个缩写是什么词语的缩写。 这个寄存器是CPU0的时钟设置寄存器。我有点好奇,这个寄…

多线程并发、线程池、同步方法、同步代码块(锁)

多线程: 同时执行多个程序 多线程需要硬件支持(cpu) 并行:在同一时刻,有多个指令在多个cpu上同时执行 并发:在同一时刻,有多个指令在单个cpu上交替执行 进程:正在运行的软件 独立…

详解VQVAE:Neural Discrete Representation Learning

VQVAE:Neural Discrete Representation Learning 原文链接:https://arxiv.org/abs/1711.00937 要看细节,强推,直接不用看论文了:VQ-VAE的简明介绍:量子化自编码器 - 科学空间|Scientific Spaces 一、问…

车辆管理怎么做?这六个车辆管理系统能帮到你!

通过本篇文章,您将了解以下问题:1、6个车辆管理系统盘点 2、企业使用车辆管理系统的价值是什么? 车辆管理系统指集合处理用车、还车、维保,监测油耗、车辆状态等车辆管理相关工作为一体的系统。 随着车辆数据的不断增长,如何快速…

武汉大学数据科学导论 WHU-data-science-introduction-996station GitHub鉴赏官

推荐理由:武汉大学数据科学导论 数据科学导论 声明: 本仓库构建目的为提供一个开源的可浏览的代码仓库,用于完成本人作业 代码作业的目录如下,纸质作业也已上传,下载地址 采用MIT协议,以供学习交流 第一次作业 决策树 第二次作业 Apriori k-means naive-bayes 第三次…

毕业设计 基于stm32与openmv的目标跟踪系统

文章目录0 前言课题简介设计框架3 硬件设计4 软件设计对被测物体的识别判断被测物体所在区域5 最后0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年…

Linux 负载均衡介绍之LVS工作模式-NAT转发模式

Linux 负载均衡介绍之LVS工作模式-NAT转发模式 图示: 工作原理: ①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP(客户端IP),后面统称为CIP),目标地址为VIP(负载均衡器前端地址,后面统称为VIP)。 ②.负载…

RK3568平台开发系列讲解(视频篇)视频渲染OpenGL ES是什么

🚀返回专栏总目录 文章目录 一、什么是OpenGL ES二、上下文环境三、OpenGL(ES)的用途四、OpenGL 渲染管线五、创建显卡执行程序5.1、创建 Shader5.2、创建 Program沉淀、分享、成长,让自己和他人都能有所收获!😄 📢渲染并不单单是要把画面绘制到屏幕上,更多的是需要…

VirtualBox启动问题记录

很久之前安装过的虚拟机,虚拟机文件是安装在移动硬盘上的,最近在做redis集群试验的时候,打算重新使用一下这个虚拟机,在启动的时候出现了一些问题,特此记录一下,便于后面再出现此问题时不知所措。 实体机操…

ChatGPT 这玩意也太猛了!程序员朋友们,我在此严正呼吁大家:端好饭碗,谨防 AI!

大家周二好呀。 最近几天大火的 ChatGPT 你玩了吗? 如果你不知道它是个什么东西,那么我让它给你来个自我介绍: ​说白了,就是一个可以对话的人工智能。 我开始以为就是一个升级版的“小爱同学”,“小度小度”&#x…

第一个MyBatis程序

目录 一、新建项目 二、设置数据库和MyBatis的配置 🍑配置数据库的连接信息 🍑配置MyBatis XML存放位置和命名规则 三、MyBatis实现查询操作 🍎MyBatis的组成 🍎使用MyBatis实现查询功能 🍎SpringBoot单元测…

TF卡格式化了怎么办?tf卡数据恢复,看这3个方法

现在手机存储卡都很普及,TF卡是最常见的存储卡之一。但是你知道吗?TF卡也会有问题,比如出现误删数据,或者把数据格式化。因为手机内存有限,我们经常会把 TF卡设置为默认的最大空间,这样就可能会出现存储空间…

Java: 字符串indexOf() /substring()/replace() 的使用

需要做的: 获取如下图响应信息html页面中的 fec7f1e4-30e0-41d1-9417-bb4829be51dc 值 一.具体思路: (1)字符串查找 indexOf()其实就是在字符串中查找其子串第一次出现的位置,如果没有找到该子串,则返回-1 四种用…

三面“有赞”Java岗斩获offer:Spring+JVM+并发锁+分布式+算法

年末离职,年初为面试也筹备挺长一段时间,找了不少复习资料,刷了很多题在网上投了很多简历最终面试了有赞,还有幸拿到offer! 本人两年Java开发,本科毕业,计算机专业,勤学好问、积极上…

BM(Boyer-Moore) 算法详解

BM算法(Boyer-Moore) BM算法也叫做精确字符集算法,它是一种从右往左比较(后往前),同时也应用到了两种规则坏字符、好后缀规则去计算我们移动的偏移量的算法。 坏字符规则 BM 算法是从后往前进行比较,此时我们发现比…