4-2文件管理-文件系统实现

news2024/11/28 17:42:29

文章目录

  • 一.文件系统层次结构
  • 二.文件系统的全局结构
  • 三.虚拟文件系统与文件系统挂载(安装)
    • (一)虚拟文件系统
    • (二)文件系统挂载(安装)

一.文件系统层次结构

(1)用户接口
文件系统需要向上层的用户提供一些简单易用的功能接口,用于处理用户发出的系统调用请求(Read、Write、Open、Close等系统调用)
(2)文件目录系统
用户是通过文件路径来访问文件的,因此这一层需要根据用户给出的文件路径找到相应的FCB或索引结点。所有和目录、目录项相关的管理工作都在本层完成,如:管理活跃的文件目录表、管理打开文件表等。
(3)存取控制模块
为了保证文件数据的安全,还需要验证用户是否有访问权限。这一层主要完成了文件保护相关功能。
(4)逻辑文件系统与文件信息缓冲区
用户指明想要访问文件记录号,这一层需要将记录号转换为对应的逻辑地址
(5)物理文件系统
把文件的逻辑地址转换为实际的物理地址
(6)设备管理模块
直接与硬件交互,负责和硬件直接相关的一些管理工作。如:分配设备、分配设备缓冲区、磁盘调度、启动设备、释放设备等
(7)辅助分配模块
负责文件存储空间的管理,即负责分配和回收存储空间
在这里插入图片描述

二.文件系统的全局结构

1.物理格式化/低级格式化
划分扇区,检测坏扇区(坏扇区对操作系统透明),并用备用扇区替换坏扇区
在这里插入图片描述
2.逻辑格式化/高级格式化
逻辑格式化后,磁盘分区(分卷),完成各分区的文件系统初始化。逻辑格式化后,灰色部分就有实际数据了,白色部分还没有数据。

(1)超级块:迅速找到若干空闲盘块
(2)位示图:判断某特定磁盘块是否空闲
(3)i 结点区:存放索引结点(连续存放),可以通过索引结点下标定位到指定结点

在这里插入图片描述
3.文件系统在内存中的结构

(1)目录的缓存
近期访问过的目录文件会缓存在内存中,不用每次都从磁盘读入,这样可以加快目录检索速度
(2)系统打开文件表
整个系统只有一张
(3)进程打开文件表
每个进程一张,包含在PCB中,记录某进程当前打开了哪些文件
在这里插入图片描述
[例] 文件A所在目录M,将目录M的数据读入主存,查找目录项,找到FCB_A,将该目录项复制到系统打开文件表,并设置打开计数。在进程的打开文件表中新建条目,记录打开方式(只读),并记录系统打开文件表索引(2),并返回文件描述符(指向进程打开文件表新条目的指针)。后续程序员即可使用文件描述符对文件进行操作。
在这里插入图片描述

三.虚拟文件系统与文件系统挂载(安装)

(一)虚拟文件系统

1.普通文件系统
计算机内部存在多种文件系统,程序员调用函数不便。
在这里插入图片描述
2.虚拟文件系统VFS
虚拟文件系统向上层用户进程提供统一标准的系统调用接口,屏蔽底层具体文件系统的实现差异。虚拟文件系统要求下层的文件系统必须实现某些规定的函数功能,如:open/read/write。一个新的文件系统想要在某操作系统上被使用,就必须满足该操作系统VFS的要求。
在这里插入图片描述
在这里插入图片描述
每次打开文件后,虚拟文件系统都会给文件在主存中建立一个VNode,将文件相关信息复制到VNode结点中。虚拟文件系统就可以用统一的数据结构来表示任何一个文件的信息(无论文件属于哪个文件系统)。VNode中的函数功能指针指向对应文件系统的函数功能列表

VNode只存在于主存中,而 iNode既会被调入主存,也会在外存中存储

在这里插入图片描述

(二)文件系统挂载(安装)

文件系统挂载要做的事:
①在VFS中注册新挂载的文件系统。内存中的挂载表包含每个文件系统的相关信息,包括文件系统类型、容量大小等。
②新挂载的文件系统,要向VFS提供一个函数地址列表
③将新文件系统加到挂载点,也就是将新文件系统挂载在某个父目录下

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

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

相关文章

密码学_MD5算法

MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。 MD5算法具有以下特点&#xff1a…

php宝塔搭建部署实战易优cms皮具皮包手袋定制网站源码

大家好啊,我是测评君,欢迎来到web测评。 本期给大家带来一套php开发的易优cms皮具皮包手袋定制网站源码,感兴趣的朋友可以自行下载学习。 技术架构 PHP7.2 nginx mysql5.7 JS CSS HTMLcnetos7以上 宝塔面板 文字搭建教程 下载源码&a…

Java 日常开发记录

手动分页 非mybatis 自动分页 service 层 Overridepublic PageInfo<CfLogVo> cfLogList(CfLogQuery cfLogQuery) {if (StrUtil.isNotBlank(cfLogQuery.getRequest()) && cfLogQuery.getRequest().length() >100){throw new ServiceException("请求报文…

Flutter | 使用 typedef 让回调更优雅

今天来谈谈 Flutter 的 typedef。 一. 熟悉的 VoidCallback 之前看 setState 源码的时候&#xff0c;发现它的参数是 VoidCallback&#xff1a; void setState(VoidCallback fn) {}VoidCallback 其实是一个自定义类型的无参数无返回值的匿名函数&#xff1a; /// Signature…

mybatis之配置优化and映射器

环境配置&#xff1a; mybatis可以配置成适应多种环境&#xff0c;但是要记住&#xff0c;尽管可以配置多个环境&#xff0c;但每个SqlSessionFactory实例只能选择一种环境。 虽然&#xff0c;MyBatis 中有两种类型的事务管理器:type("[JDBC|MANAGED]"&#xff09;…

Web进阶:Day3 移动端特点、百分比布局、Flex布局、实战演练

Web进阶&#xff1a;Day3 Date: January 7, 2023 Summary: 移动端特点、百分比布局、Flex布局、实战演练 移动端特点 移动端和PC端网页不同点 PC端网页和移动端网页的有什么不同&#xff1f; PC屏幕大&#xff0c;网页固定版心 手机屏幕小&#xff0c; 网页宽度多数为100%…

【Docker】(五)使用bind mounts修改Docker容器中的Nginx配置

1.前言 本系列文章记录了从0开始学习Docker的过程&#xff0c;Docker系列历史文章&#xff1a; &#xff08;一&#xff09;基本概念与安装使用 &#xff08;二&#xff09;如何使用Docker发布一个SpringBoot服务 &#xff08;三&#xff09;使用registry远程镜像仓库管理镜像…

axios拦截器、ElementUI

一、axios拦截器 1、axios模块的作用 是对基于http请求的封装。在浏览器对异步请求对象XMLHttpRequest进行封装 2、拦截器 ​ &#xff08;1&#xff09;请求拦截器&#xff1a;对客户端发起的请求进行统一的前期处理&#xff08;token、时间戳、cookie等&#xff09; ​ …

linux系统中利用QT实现绘制图和图标的方法

大家好&#xff0c;今天主要和大家聊一聊&#xff0c;如何使用QT进行绘图和图标的方法。 第一&#xff1a;绘图和图表简介 绘图与图表在嵌入式里有的比较多&#xff0c;尤其是图表&#xff0c;我们常在股票里看到的“图表折线/曲线图/饼状图等”都可以用 Qt 的图表来实现。绘图…

生产制造业如何谋求数字化转型?需要哪些信息化系统做支撑?

生产制造业数字化转型有什么思路&#xff1f;生产制造业需要哪些信息化系统做支撑&#xff1f; 近年来&#xff0c;围绕新产品新模式新业态&#xff0c;国家重点部署了7个方向&#xff0c;包括数字化管理、平台化设计、智能化生产、网络化协同、个性化定制、服务化延伸、新型智…

Revit图纸问题:设置dwg图纸显示顺序和批量图纸编号

一、Revit中设置导入的dwg图纸的显示顺序 我们在实际工作中经常需要将各种DWG图纸导入到revit中进行参考&#xff0c;有时候希望它盖住已有模型&#xff0c;有时候又需要它在模型以下显示&#xff0c;即实现类似于CAD的图层显示顺序功能&#xff0c;应该如何才能实现呢&#xf…

Window Server 2022 无法安装网卡驱动 1219-v

安装过win10的朋友都知道,win10基本上不用自己下载驱动. 插上网线就能用. 但是今天在server2022上,死活无法安装成功. 原因有很多,网上也有很多资料. 重点: 其实不需要修改驱动配置, 只需要在驱动中选择对应驱动,比如: 1219[x]-LM,x标识很多版本,选择一个低一点的就可以了. …

MySQL - explain 执行计划详解

explain显示了MySQL如何使用索引来处理select语句以及连接表&#xff0c;可以帮助选择更好的索引和写出更优化的查询语句。 explain 查询结果如下&#xff1a; 字段说明&#xff1a; 列名说明id id列的编号是select的序列号&#xff0c;有几个select就有几个id&#xff0c;并…

IPEmotion的NVH噪声测试模块——坎贝尔图

德国IPETRONIK的IPEmotion软件除了可以对之前介绍的热管理试验及热管理台架试验、电性能试验和道路试验等各种进行基本的温度、模拟量和数字信号的采集分析外&#xff0c;无论专业版、开发版还是分析版均支持噪声分析模块。该模块支持噪声数据离线后处理&#xff0c;包括Campbe…

如何通过大数据赋能产业园区高质量发展

2022年年底&#xff0c;中共中央、国务院印发了《关于构建数据基础制度更好发挥数据要素作用的意见》(以下简称《数据二十条》)&#xff0c;以《数据二十条》出台为标志&#xff0c;我国数字经济发展从技术引领进入到数据驱动的新阶段&#xff0c;加快构建数据基础制度&#xf…

LINUX提权之第三方服务提权篇

前言 上一篇文章讲了一下环境变量提权不知道大家学习的怎么样了&#xff0c;今天给大家带来新的提权知识——“第三方服务提权”&#xff0c;本文会深入浅出讲解一下第三方服务提权的原理以及例子。 第三方服务 所谓的第三方服务可以大致理解为系统中安装的软件&#xff08;…

机器人中的数值优化|【二】最速下降法,可行牛顿法的python实现,以Rosenbrock function为例

机器人中的数值优化|【二】最优化方法&#xff1a;最速下降法&#xff0c;可行牛顿法的python实现&#xff0c;以Rosenbrock function为例 在上一节中提到了我们详细探讨了数值优化/最优化理论中的基本概念和性质&#xff0c;现在开始使用python对算法进行实现。上一节链接&am…

CVE-2021-25296 复现

# 漏洞描述 名称&#xff1a;Apache OFBiz rmi反序列化漏洞 cve编号&#xff1a;cve-2021-25296 危害&#xff1a;未授权远程命令执行 影响版本&#xff1a;Apache OFBiz < 17.12.06 OFBiz是一个非常著名的电子商务平台&#xff0c;是一个非常著名的开源项目&#xff0…

Python识别屏幕题目并模拟做题

前言 马上就要过年了&#xff0c;有许多小伙伴们本本还没拿到&#xff0c;还在苦苦刷题&#xff0c;一直及格不了&#xff0c;现在&#xff0c;我们用Python模拟做题&#xff0c;看看效果。 环境使用 python 3.9pycharm 模块使用 requestsreselenium谷歌驱动 import reimpor…

动态规划|474. 一和零

题目看上去很唬人&#xff0c;但是恰恰是这样说明该题设计的目的很强&#xff0c;指向dp的01背包&#xff0c;就是为了考01背包设计的。 像极了中学时代的那种看上去花里胡哨&#xff0c;实质上是根据考点设计出题的题目。&#xff08;这种题看破出题意图&#xff0c;往往都很简…