文件系统相关

news2024/11/27 10:31:29

文件系统部分的大纲要求:

  1. 文件系统的全局结构:文件系统在外存中的结构,文件系统在内存中的结构
  2. 外存空闲空间管理办法
  3. 虚拟文件系统
  4. 文件系统挂载

一、文件系统的层次结构

可分为三个层次:最低层是对象及其属性,中间层是对对象进行操纵和管理的软件集合,最高层是文件系统(提供给用户的)接口
请添加图片描述

  1. 对象及其属性:文件系统管理三类对象
    • 文件
    • 目录
    • 磁盘(磁带)存储空间
  2. 对对象进行操纵和管理的软件集合:是文件系统的核心部分。一般将与文件系统有关的软件分为4个层次:
    • I/O控制层:是文件系统的最低层,主要由磁盘驱动程序等组成,也可称为设备驱动程序层
    • 基本文件系统:主要用于实现内存与磁盘之间数据块的交换
    • 文件组织模块:也称为基本I/O管理程序,该层负责完成与磁盘I/O有关的事务,如将文件逻辑块号变为物理块号、管理磁盘中的空闲盘块、指定I/O缓冲等
    • 逻辑文件系统:用于处理并记录同文件相关的操作,如允许用户和应用程序使用符号文件名访问文件和记录、保护文件和记录等。
      请添加图片描述
  3. 文件系统接口:文件系统以接口的形式提供了一组对文件和记录进行操作的方法和手段。常用的两类接口是:
    • 命令接口:终端命令
    • 程序接口:系统调用

二、文件系统布局

  1. 一个磁盘从出厂->物理格式化->逻辑格式化这个过程中,文件系统在外存中是如何被建立的
    • 物理格式化:磁盘刚被生产出来的时候没有划分扇区,此时要进行物理格式化(也称低级格式化),即划分扇区、检测坏扇区,并用备用扇区替换坏扇区。坏扇区的存在对操作系统来说是透明的(即OS意识不到坏扇区的存在)
      请添加图片描述
    • 逻辑格式化:即磁盘分区(分卷),完成各分区的文件系统初始化。逻辑格式化后,灰色部分就有数据了,白色部分还没有数据
      请添加图片描述
  2. 文件系统在磁盘中的结构:
    • 整体:多个磁盘划分为一个或多个分区,每个分区有一个独立的文件系统。文件系统包含:启动操作系统的方式、总块数、空闲块数量和位置、目录结构、各个具体文件等
    • 下图是一个可能的文件系统布局,对其中一些部分的解释如下(前五个是在逻辑格式化后就有了实际数据,见上一个序号):
      • 主引导记录MBR:位于磁盘的0号扇区,后面就是分区表,该表给出每个分区的起始和结束地址。当计算机启动时,BIOS读入并执行MBR,MBR做的第一件事就是确定活动分区,读入它的第一块,即引导块
      • 引导块:引导块中的程序负责启动该分区中的操作系统。
      • 超级块:包含文件系统的所有关键信息(如分区的块数量、块大小、空闲块的数量和指针、空闲的FCB数量、FCB指针等)。计算机启动时或在该文件系统首次使用时,超级块会被读入内存。有了超级块就可以迅速找到这个磁盘分区里面所有的空闲块。用于新建一个文件时迅速分配多个磁盘块
      • 文件系统中空闲块的信息,可使用位示图或指针链接的形式给出。位示图可以迅速的判断某一个特定的磁盘块是否空闲(超级块的作用是迅速找到若干个空闲盘块)。
        • 位示图、超级块这两个数据结构在功能上有一定重合性(都可以标记哪些盘块空闲),但在实际使用中侧重点会有一些区别
      • 索引节点在i节点区连续存放,且大小相同,因此可以通过一个索引节点的下标迅速定位到一个指定的索引节点
      • 根目录
        请添加图片描述
  3. 文件系统在内存中的结构
    如下图,用户区有“文件描述符fd”;内核区有当前打开目录的缓存、系统打开文件表、进程(用户)打开文件表
    在这里插入图片描述

三、外存空闲空间管理

四、虚拟文件系统VFS

  1. 各种文件系统存在的问题
    • 不同的文件系统(UFS/NTFS/FAT),其函数名和参数不同(如UFS是open(参数a, b);NTFS是fopen(参数x);FAT是openf(参数p, q)),用户使用文件系统时没有统一接口
    • 不同的文件系统都使用同一VFS,新添加一个文件系统或修改一个文件系统的代码就去修改内核区VFS的代码显然不现实
    • 不同的文件系统,表示文件的数据结构也不相同。打开文件后,其在内存中的表示也不同(如UFS的目录项和inode、FAT的目录项)
  2. 为解决上述问题,VFS的特点/作用:
    • 向上层用户进程提供统一标准的系统调用接口,屏蔽底层具体文件系统的实现差异
    • 要求下层的文件系统必须实现某些规定的函数功能,如:open/read/write。一个新的文件系统想要在某操作系统上被使用,就必须满足该操作系统VFS的要求
    • 每打开一个文件,VFS就在主存中新建一个vnode,用统一的数据结构表示文件,无论该文件存储在哪个文件系统
  3. 综上,如下图:
    在这里插入图片描述

五、文件系统挂载

  1. 文件系统挂载要做的事:
    • 在VFS中注册新挂载的文件系统:内存中的挂载表包含每个文件系统的相关信息(文件系统类型、容量大小等)
    • 新挂载的文件系统,要向VFS提供一个函数地址列表(如上图中的黄色小表。这样才能让VFS能够调用新挂载的文件系统所提供的功能函数)
    • 将新文件系统加到挂载点,也就是将新文件系统挂载在某个父目录下

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

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

相关文章

物证管理系统|智物证DW-S404是一套成熟系统

系统背景 我司物证智能管理系统(智物证DW-S404)是一套成熟系统,依托互3D技术、RFID技术、数据库技术、AI、视频分析技术对物证进行统一管理、分析的信息化、智能化、规范化的系统。 物证是公安或者监狱处理案件的关键凭证,针对过…

3交换机的配置与使用

越来越发觉大学的教程是真好,虽然说深度可能不太够,但作为入门实在太好了。中国也有公开课,推荐中国大学MOOC,感谢网易有道与高教社。 最近特别累、活也特别多,所以学习的时间少了很多。但看到MOOC之后,又…

软件测试(六)自动化测试 Junit5

Junit5 selenium是自动化测试框架(写自动化测试用例)Junit单元测试框架(管理写好的测试用例) 注解:Test,Disable ,BeforeAll,AfterAll,BeforeEach,AfteEach…

操作系统——多个类别产品的生产者-消费者问题(王道视频p33、课本ch6)

1.问题解剖——得到的是 1个“互斥信号量” 3个“同步信号量” 其中特别注意,对于盘子plate可以清空的设计4个对象的,但是只用这一个同步信号量就可以实现 2.代码—— 3.由于这里的同步信号量的初值都是1,所以,即使不设置互斥信…

04.Finetune vs. Prompt

目录 语言模型回顾大模型的两种路线专才通才二者的比较 专才养成记通才养成记Instruction LearningIn-context Learning 自动Prompt 部分截图来自原课程视频《2023李宏毅最新生成式AI教程》,B站自行搜索 语言模型回顾 GPT:文字接龙 How are __. Bert&a…

大语言模型(LLM)综述(二):开发大语言模型的公开可用资源

A Survey of Large Language Models 前言3. RESOURCES OF LLMS3.1 公开可用的模型CheckPoints或 API3.2 常用语料库3.3 库资源 前言 随着人工智能和机器学习领域的迅速发展,语言模型已经从简单的词袋模型(Bag-of-Words)和N-gram模型演变为更…

RK3568 USB驱动开发

一.USB的DTS配置说明 1.USB 2.0 控制器 DTS 1.1 USB 2.0 Host 控制器 DTS USB 2.0 Host0 控制器 (EHCI & OHCI) 的DTS为例: 其中,EHCI 控制器的 compatible 固定为 “generic-ehci”,OHCI 控制器的 compatible 固定为 “genericohci”…

39.克鲁斯卡尔(Kruskal)算法

一言 已知n个顶点,选n-1条最短的边,不可成环。 概述 克鲁斯卡尔(Kruskal)算法是用来求加权连通图的最小生成树的算法。其基本思想是按照权值从小到大的顺序选择n-1条边,保证这n-1条边不构成回路。 这就要求要首先构…

写给Java/Android开发者的Python入门教程

1. 前言 对于Java/Android开发工程师来说,已经掌握了Java语言,这时再学其他语言(C/C除外),都是比较容易的,可能花上几个小时就能入门了。 作为一个Android开发工程师,今天一时兴起,学了下Python&#xff0…

初识进程以及父子进程

一 进程概念 什么是进程呢?许多资料都说一个已经加载到内存的程序就叫进程,意思是只要代码到了内存就能跑起来了吗?接下来我就谈谈对进程概念的理解。 1 如何管理进程 我们可能运行多个进程,这些进程有些结束,有些要退出&#x…

yolov5自己的数据集制作

文章目录 一、制作数据集1、创建文件夹结构如下2、将之前的图片以及标注数据放入mydata文件夹3、新建一个mydata.yaml文件 二、基于数据集训练模型1、基于数据集训练模型2、开始根据制作好的数据集训练模型3、模型训练结束 三、部署模型 文章参考博主:风吹落叶花飘荡…

Power BI 傻瓜入门 6. 从动态数据源获取数据

本章内容将介绍 发现如何从关系数据库和非关系数据库中提取数据学习如何使用Power BI使用在线和实时数据源跨多个数据源应用分析服务使用Power BI通过静态和动态数据解决纠正措施 数据有时可能有点复杂。诚然,上传一个包含几个电子表格的文件,或者一个…

计算机中整数的补码表示及二进制数轮

为了同学们能理好的理解数在计算机内的表示,我们可以把计算机中的整数看成N位进制数的数轮,N一般为2的幂,如下: 我们来举个例子:如果用4位二进制来表示整数,则可以表示的整数范围为-8(即&#x…

详细介绍如何使用Ipopt非线性求解器求解带约束的最优化问题

本文中将详细介绍如何使用Ipopt非线性求解器求解带约束的最优化问题,结合给出的带约束的最优化问题示例,给出相应的完整的C程序,并给出详细的解释和注释,以及编译规则等 一、Ipopt库的安装和测试 本部分内容在之前的文章《Ubuntu2…

STM32-LTC6804方案成熟BMS方案

方案下载链接!!https://mp.weixin.qq.com/s?__bizMzU2OTc4ODA4OA&mid2247549092&idx1&snc73855c4e3d5afddd8608d8528864f95&chksmfcfb1373cb8c9a65a4bd1f545a1a587af882f209e7ccbb8944f4d2514d241ca1d7fcc4615e10&token539106225&a…

【字符函数】

✨博客主页:小钱编程成长记 🎈博客专栏:进阶C语言 🎈相关博文:字符串函数(一)、字符串函数(二) 字符函数 字符函数1.字符分类函数1.1 iscntrl - 判断是否是控制字符1.2 i…

【GWO-KELM预测】基于灰狼算法优化核极限学习机回归预测研究(matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【Java基础面试四十六】、 List<? super T>和List<? extends T>有什么区别?

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:问题 参考答案&#x…

蓝桥每日一题(day 4: 蓝桥592.门牌制作)--模拟--easy

#include <iostream> using namespace std; int main() {int res 0;for(int i 1; i < 2021; i ){int b i;while(b){if (b % 10 2) res ;b / 10;}}cout << res; return 0; }

FFmpeg和rtsp服务器搭建视频直播流服务

下面使用的是ubuntu的&#xff0c;window系统可以参考&#xff1a; 通过rtsp-simple-server和ffmpeg实现录屏并发布视频直播_rtsp simple server_病毒宇宇的博客-CSDN博客 一、安装rtsp-simple-server &#xff08;1&#xff09;下载rtsp-simple-server 下载地址&#xff1a;R…