文件系统相关
文件系统部分的大纲要求:
- 文件系统的全局结构:文件系统在外存中的结构,文件系统在内存中的结构
- 外存空闲空间管理办法
- 虚拟文件系统
- 文件系统挂载
一、文件系统的层次结构
可分为三个层次:最低层是对象及其属性,中间层是对对象进行操纵和管理的软件集合,最高层是文件系统(提供给用户的)接口

- 对象及其属性:文件系统管理三类对象
- 文件
- 目录
- 磁盘(磁带)存储空间
- 对对象进行操纵和管理的软件集合:是文件系统的核心部分。一般将与文件系统有关的软件分为4个层次:
- I/O控制层:是文件系统的最低层,主要由磁盘驱动程序等组成,也可称为设备驱动程序层
- 基本文件系统:主要用于实现内存与磁盘之间数据块的交换
- 文件组织模块:也称为基本I/O管理程序,该层负责完成与磁盘I/O有关的事务,如将文件逻辑块号变为物理块号、管理磁盘中的空闲盘块、指定I/O缓冲等
- 逻辑文件系统:用于处理并记录同文件相关的操作,如允许用户和应用程序使用符号文件名访问文件和记录、保护文件和记录等。

- 文件系统接口:文件系统以接口的形式提供了一组对文件和记录进行操作的方法和手段。常用的两类接口是:
- 命令接口:终端命令
- 程序接口:系统调用
二、文件系统布局
- 一个磁盘从出厂->物理格式化->逻辑格式化这个过程中,文件系统在外存中是如何被建立的
- 物理格式化:磁盘刚被生产出来的时候没有划分扇区,此时要进行物理格式化(也称低级格式化),即划分扇区、检测坏扇区,并用备用扇区替换坏扇区。坏扇区的存在对操作系统来说是透明的(即OS意识不到坏扇区的存在)

- 逻辑格式化:即磁盘分区(分卷),完成各分区的文件系统初始化。逻辑格式化后,灰色部分就有数据了,白色部分还没有数据

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

- 文件系统在内存中的结构
如下图,用户区有“文件描述符fd”;内核区有当前打开目录的缓存、系统打开文件表、进程(用户)打开文件表

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

五、文件系统挂载
- 文件系统挂载要做的事:
- 在VFS中注册新挂载的文件系统:内存中的挂载表包含每个文件系统的相关信息(文件系统类型、容量大小等)
- 新挂载的文件系统,要向VFS提供一个函数地址列表(如上图中的黄色小表。这样才能让VFS能够调用新挂载的文件系统所提供的功能函数)
- 将新文件系统加到挂载点,也就是将新文件系统挂载在某个父目录下
相关文章:
文件系统相关
文件系统部分的大纲要求: 文件系统的全局结构:文件系统在外存中的结构,文件系统在内存中的结构外存空闲空间管理办法虚拟文件系统文件系统挂载 一、文件系统的层次结构 可分为三个层次:最低层是对象及其属性,中间层…...
edm邮件开发信模板
现在很多从事外贸的工作人员在寻找一些邮件模板,今天一米软件给大家总结了几套常用的开发新客户的邮件模板 开发新模板1: Hi Sir, Glad to hear that youre on the market for **. We specialize in this field for several years, with the strengt…...
边缘服务器的未来是什么?思考 5G 和 AI 需求
什么是边缘服务器 边缘服务器是一种分布式计算模式,旨在提高数据中心和云服务的效率,并解决设备之间通信的延迟问题。它将业务从中央数据中心转移到边缘设备附近,将计算、存储和网络资源靠近终端用户和设备,以实现更快速的数据处…...
老卫带你学---leetcode刷题(438. 找到字符串中所有字母异位词)
438. 找到字符串中所有字母异位词 问题: 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 异位词 指由相同字母重排列形成的字符串(包括相同的字符串)。 …...
unity中使用protobuf工具将proto文件转为C#实体脚本
unity中使用protobuf工具将proto文件转为C#实体脚本 介绍优点缺点Protobuf 为什么比 XML 快得多?Protobuf的EncodingProtobuf封解包的过程通常编写一个Google Protocol Buffer应用需要以下几步: Protostuff是什么Protobuf工具总结 介绍 protobuf也就是G…...
1024程序员狂欢节有好礼 | 前沿技术、人工智能、集成电路科学与芯片技术、新一代信息与通信技术、网络空间安全技术
🌹欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 1024程序员狂欢节有好礼 🚩🚩🚩点击直达福利前言一、IT技术 IT Technology《速学Linux:系统应用从入门到精通》《Pytho…...
常用Web安全扫描工具合集
漏洞扫描是一种安全检测行为,更是一类重要的网络安全技术,它能够有效提高网络的安全性,而且漏洞扫描属于主动的防范措施,可以很好地避免黑客攻击行为,做到防患于未然。那么好用的漏洞扫描工具有哪些? 1、A…...
Zoho Mail荣登福布斯小型企业企业邮箱排行榜
在过去的数十载里,电子邮件已成为电子通信领域中不可或缺的一环,而在未来的岁月里,它有望继续在全球范围内普及应用。尽管如今市场上有许多免费的企业邮箱供用户和企业选用,但其中许多产品在特定场景下的专业化功能尚显不足&#…...
Cave Cows 3
题目描述 约翰的 N (1≤N≤50000 )只牛在一个黑魃魃的洞里探险,他们只能通过叫声交流。 两只牛之间的曼哈顿距离决定了声音传播的时间。即牛1与牛2交流,需要的时间为 ∣x1−x2∣∣y1−y2∣ 。其中 −2≤106−106≤x1,x2,y1,y2≤106 。…...
Java程序设计2023-第四次上机练习
8-1三子棋 编写程序,实现简单的三子棋游戏。在三子棋中,双方在33的棋盘中轮流下棋,一方用*示,另一方用O表示。如果一方的3个棋子占据了同一行,同一列或者对角线,则该方获胜。如果棋盘已被棋子占满…...
nonaDlA 逻辑分析仪 使用记录
注意事项,很灵敏,不要用手碰,产生误触发 安装软件 github地址 官方提供的淘宝地址与使用说明 1.安装 1.安装程序 :下载githubDLA源码,打开 software\PulseView.exe安装 2.安装驱动:安装完第一步后&a…...
用HFSS仿真平面线圈的电感量
用HFSS工具仿真平面线圈的电感量 平面线圈是指在平面上绕制而成的线圈,如PCB上的电感线圈、无线供电使用的金属丝绕制而成的线圈等。根据线圈的不同形状可将平面线圈分为方形线圈,六角形线圈、八角形线圈、螺旋原型线圈等。 网络上的计算平面线圈电感量…...
字节面试题——数据库, linux
数据库 1.sq|语句取-一个月内的id分组取-一个年级中每个班级年龄最小的同学名字成绩表输出前三名的 成绩,后三名呢拷贝A表的数据到B表查询每1 ]科目都大于80分的学生名字筛选出每个小时 的记录考察where考察聚合函数where和having的区别-一个数据库sq|查询重复个数…...
ES基础知识
ES基础知识 单独查询一个文档(_doc)时,Elasticsearch 会返回该文档的原始数据,通常以 JSON 格式呈现。以下是一些常见字段及其含义: _index: 表示文档所属的索引名称。_type (在较早的 Elasticsearch 版本中使用&…...
当年很流行,现在已经淘汰的前端技术有哪些?
近几年,前端技术真可谓是飞速发展,不断有新的技术涌现,爆火的前端框架 Astro,前端运行时 Bun,构建工具 Vite 等都给前端提供了强大动力。当然,也有很多前端技术随着技术的发展不再需要使用,有了…...
IP地址定位是什么?有哪些优缺点?
IP地址定位是一种用于确定设备或用户地理位置的方法,具有一些明显的优点和缺点。以下是IP地址定位的优缺点: 优点: 广泛适用性: IP地址定位适用于几乎所有与互联网连接的设备,包括计算机、智能手机、平板电脑和物联网…...
scrapy爬虫之网站图片爬取
Scrapy是一个强大的Python爬虫框架,可以用于爬取网站上的各种数据,包括图片。以下是一个简单的示例,演示如何使用Scrapy来爬取网站上的图片: 安装Scrapy: 如果尚未安装Scrapy,可以使用以下命令安装它&…...
flask整合rabbitMQ插件的方式
文章目录 二、Python-flask-rabbitMQ-插件方式整合引言具体步骤1 安装依赖:2 编写实体类:3 编写消费者和生产者:4 初始化消费者和生产者:5 其他地方使用生产者 二、Python-flask-rabbitMQ-插件方式整合 引言 当今互联网应用的高…...
【React】高频面试题
1. 简述下 React 的事件代理机制? React使用了一种称为“事件代理”(Event Delegation)的机制来处理事件。事件代理是指将事件处理程序绑定到组件的父级元素上,然后在需要处理事件的子元素上触发事件时,事件将被委托给…...
Java数据结构之稀疏数组
目录 线性结构与非线性结构线性结构非线性结构 稀疏数组应用场景 代码实现二维数组转稀疏数组稀疏数组转二维数组 线性结构与非线性结构 线性结构 数据结构分两种,线性与非线性,线性结构的数据元素之间存在一对一的关系。 一对一指的是每个数据元素都…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
