磁盘就是一个超大的Byte数组,操作系统是如何管理的?
磁盘在操作系统的维度看,就是一个“超大的Byte数组”。
那么操作系统是如何对这块“超大的Byte数组”做管理的呢?
我们知道在逻辑上,上帝说是用“文件”的概念来进行管理的。于是,便有了“文件系统”。那么,文件系统底层又是怎么设计的呢?下面我来说两句。
首先,我直接给一张架构图。

对磁盘进行管理,抽象上,是分为两步。
一、分区
将磁盘划分分区,其实就是把一个物理的硬盘划分为逻辑上几个虚拟的硬盘,称为分区。
每个分区上可以装有自己的文件系统。基本装电脑大家都不会陌生。这里可以理解为就是把那个“超大的byte数据分为一段一段分开管理”。
二、装文件系统
将其中的一段byte数组,按结构化格式为一个文件系统的数据存储结构。
从上面图中可以看到,他们把这段byte数组大体上分为4小段,每段提供一些作用,存储一些信息,目的就是可以利用这些存储空间来对磁盘自身来做管理。重点看i节点表和数据块。
每个文件对应i节点表中的一条记录,文件的内容被碎片化的存储到数据块中。碎片化,举一个具体的例子,比如说1KB的文件,分为两个小的数据块,一个512B,分别存储到数据块区域的两个不连续的位置。
那么最重点的实现,就是这个i节点表中的i节点的实现。因为这个实现决定了文件真正在磁盘中的样子。
在每个i节点里,又被分为了15个小段,其中
- 第1段存储了文件一些基本信息。
- 第2段到第12段,存了指针。这个指针指向上述说的
数据块区域里面的一个数据块,这些就是文件的内容 - 第12段,存了指针。这个指针指向上述说的
数据块区域里面的一个数据块,注意,这个数据块中记录的还是指针,而数据块中的这些指针还是指向数据块区域里面的数据块,我们称为间接指针,通过这样的方式,我们可以记录的文件内容可以翻256倍(原来只能指向一个数据块,现在可以指向256个)。 - 第13段,存了指针。但是是
二重间接指针。原理同上,不说。 - 第14段,
三重间接指针
优雅的数据结构,具备了几个优点
- 碎片化的存储文件数据
- i节点结构固定,但是可以支持任意大小的文件
- 可支持文件空洞。即文件中间几个数据块不存在数据
- 最大支持4TB文件
综上,我们整体知道了操作系统大致是如何管理磁盘的,不得不说一个好的数据结构的伟大。
不仅如此,这个思想我认为还可以借鉴到我们实际的开发中,即对一个超大byte数组存储的管理,如Go中的对象数据管理等等,值得好好回味把玩。
相关文章:
磁盘就是一个超大的Byte数组,操作系统是如何管理的?
磁盘在操作系统的维度看,就是一个“超大的Byte数组”。 那么操作系统是如何对这块“超大的Byte数组”做管理的呢? 我们知道在逻辑上,上帝说是用“文件”的概念来进行管理的。于是,便有了“文件系统”。那么,文件系统…...
14-28 剑和诗人2 - 高性能编程Bend和Mojo
介绍: 在不断发展的计算世界中,软件和硬件之间的界限变得越来越模糊。随着我们不断突破技术可能性的界限,对能够利用现代硬件功能的高效、可扩展的编程语言的需求从未如此迫切。 Bend和 Mojo是编程语言领域的两种新秀,它们有望弥…...
Stable Diffusion:最全详细图解
Stable Diffusion,作为一种革命性的图像生成模型,自发布以来便因其卓越的生成质量和高效的计算性能而受到广泛关注。不同于以往的生成模型,Stable Diffusion在生成图像的过程中,采用了独特的扩散过程,结合深度学习技术…...
Apache Seata分布式事务之Seata-Client原理及流程详解
本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 本文来自 Apache Seata官方文档,欢迎访问官网,查看更多深度文章。 前言 在分布式系统中,分布式事务是一个必须要解决的问题,目前使用较多…...
Linux wget报未找到命令
wget报未找到命令需要安装wget 1、下载wget安装文件,本次于华为云资源镜像下载 地址:https://mirrors.huaweicloud.com/centos-vault/7.8.2003/os/x86_64/Packages/ 2、下载后上传到安装服务器/install_package,执行命令安装 rpm -ivh /i…...
38条Web测试经验分享
1. 页面链接检查 每一个链接是否都有对应的页面,并且页面之间切换正确。可以使用一些工具,如LinkBotPro、File-AIDCS、HTML Link Validater、Xenu等工具。 LinkBotPro不支持中文,中文字符显示为乱码;HTML Link Validater只能测…...
TCP报文校验和(checksum)计算
一. 原理 将TCP相关内容(TCP伪头部TCP头部TCP内容)转换成16比特的字符,然后进行累加,最后结果进行取反。TCP伪头部是固定的,下文有相关代码展示。 二. 源码 源码 #include <stdio.h> #include <stdlib.h&…...
【ue5】虚幻5同时开多个项目
正常开ue5项目我是直接在桌面点击快捷方式进入 只会打开一个项目 如果再想打开一个项目需要进入epic 再点击启动就可以再开一个项目了...
【Python实战因果推断】23_倾向分3
目录 Propensity Score Matching Inverse Propensity Weighting Propensity Score Matching 另一种控制倾向得分的常用方法是匹配估计法。这种方法搜索具有相似可观测特征的单位对,并比较接受干预与未接受干预的单位的结果。如果您有数据科学背景,您可…...
Qt源码解析之QObject
省去大部分virtual和public方法后,Qobject主要剩下以下成员: //qobject.h class Q_CORE_EXPORT Qobject{Q_OBJECTQ_PROPERTY(QString objectName READ objectName WRITE setObjectName NOTIFY objectNameChanged)Q_DECLARE_PRIVATE(QObject) public:Q_I…...
【算法专题】模拟算法题
模拟算法题往往不涉及复杂的数据结构或算法,而是侧重于对特定情景的代码实现,关键在于理解题目所描述的情境,并能够将其转化为代码逻辑。所以我们在处理这种类型的题目时,最好要现在演草纸上把情况理清楚,再动手编写代…...
分库分表真的适合你的系统吗?
曾几何时,“并发高就分库,数据大就分表”已经成了处理 MySQL 数据增长问题的圣经。 面试官喜欢问,博主喜欢写,候选人也喜欢背,似乎已经形成了一个闭环。 但你有没有思考过,分库分表真的适合你的系统吗&am…...
9 redis,memcached,nginx网络组件
课程目标: 1.网络模块要处理哪些事情 2.reactor是怎么处理这些事情的 3.reactor怎么封装 4.网络模块与业务逻辑的关系 5.怎么优化reactor? io函数 函数调用 都有两个作用:io检测 是否就绪 io操作 1. int clientfd = accept(listenfd, &addr, &len); 检测 全连接队列…...
【MySQL】事务四大特性以及实现原理
事务四大特性 原子性(Atomicity) 事务中的所有操作要么全部完成,要么全部不执行。如果事务中的任何一步失败,整个事务都会被回滚,以保持数据的完整性。 一致性(Consistency) 事务应确保数据库…...
【控制Android.bp的编译】
1.首先Android.bp的语法是不支持if 条件语句的 2.查到可以用enabled来控制Android.bp中的模块是否参与编译,但是并不能实现动态的控制,比如你需要根据获取到的安卓版本来控制一个Android.bp是否编译,是无法做到的。enabled只能是固定的true或…...
【车载开发系列】J-Link/JFlash 简介与驱动安装方法
【车载开发系列】J-Link/JFlash 简介与驱动安装方法 【车载开发系列】J-Link/JFlash 简介与驱动安装方法 【车载开发系列】J-Link/JFlash 简介与驱动安装方法一. 软件介绍二. 下载安装包二. 开始安装三. 确认安装四. J-Flash的使用 一. 软件介绍 J-Link是SEGGER公司为支持仿真…...
207 课程表
题目 你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] [ai, bi] ,表示如果要学习课程 ai 则 必须 先学习课程 bi 。 …...
罗剑锋的C++实战笔记学习(一):const、智能指针、lambda表达式
1、const 1)、常量 const一般的用法就是修饰变量、引用、指针,修饰之后它们就变成了常量,需要注意的是const并未区分出编译期常量和运行期常量,并且const只保证了运行时不直接被修改 一般的情况,const放在左边&…...
宁德时代天行发布,商用车超充时代来临
近日,宁德时代正式推出商用动力电池品牌——“宁德时代天行”,同时发布“宁德时代天行轻型商用车(L)-超充版”和“宁德时代天行轻型商用车(L)-长续航版”两款产品,可实现4C超充能力和500km的实况…...
硅纪元应用评测 | 弱智吧大战GPT4o和Claude 3.5 Sonnet
"硅纪元AI应用测评"栏目,深入解析和评测最新的人工智能应用,提供专业见解和实用建议。不论您是AI专家还是科技爱好者,都能找到权威、详尽的测评,帮助您在快速发展的AI领域中做出最佳选择。一起探索AI的真实潜力…...
OpenClaw性能调优:Qwen3-32B在RTX4090D上的参数配置
OpenClaw性能调优:Qwen3-32B在RTX4090D上的参数配置 1. 为什么需要性能调优 当我第一次在RTX4090D上部署Qwen3-32B模型时,本以为高端硬件能轻松应对所有任务。但实际使用OpenClaw执行自动化流程时,却发现响应时快时慢,有时甚至出…...
VMware ESXi 上玩转 SmartX 超融合社区版:OVF 镜像部署全攻略(含网络配置避坑指南)
VMware ESXi 上部署 SmartX 超融合社区版:OVF 镜像实战指南 虚拟化管理员们常常面临一个现实困境:如何在有限的硬件资源下快速体验企业级超融合架构?SmartX 超融合社区版通过 OVF 镜像部署方案,为 VMware ESXi 环境提供了轻量级验…...
别再只盯着KNN了:聊聊Wi-Fi指纹定位中那些被低估的匹配算法与实战选择
超越KNN:Wi-Fi指纹定位中的高阶匹配算法与工程化选型指南 商场里找不到心仪店铺的焦虑、仓库中耗时的手动货品盘点、医院里紧急设备定位的延迟——这些场景背后都指向同一个技术痛点:室内定位精度不足。当大多数开发者习惯性采用KNN算法时,我…...
从零搭建SRS流媒体服务器:实现RTMP推拉流的实战部署指南
1. 为什么选择SRS搭建流媒体服务器? 最近几年直播和实时视频的需求爆发式增长,很多开发者都在寻找轻量高效的流媒体服务器方案。我测试过不少开源方案,最终发现SRS(Simple Realtime Server)是最适合个人和小团队自建的…...
【读书笔记】《逆风跑者》
《逆风跑者》| 长跑人的阿甘正传 如果你也曾困顿过,迷茫过,被生活压得喘不过气来,那么就拉过一把椅子静静地坐一会儿吧。听我说说这位无声跑者的事儿,和他一起不屈不挠地寂静奔跑一次。 📖 关于这本书 《逆风跑者》是…...
智能演示文稿生成:PPTAgent零基础落地指南与效能提升策略
智能演示文稿生成:PPTAgent零基础落地指南与效能提升策略 【免费下载链接】PPTAgent PPTAgent: Generating and Evaluating Presentations Beyond Text-to-Slides 项目地址: https://gitcode.com/gh_mirrors/pp/PPTAgent PPTAgent作为一款领先的自动化PPT生成…...
LibreHardwareMonitor:5分钟掌握免费开源硬件监控的终极指南
LibreHardwareMonitor:5分钟掌握免费开源硬件监控的终极指南 【免费下载链接】LibreHardwareMonitor Libre Hardware Monitor, home of the fork of Open Hardware Monitor 项目地址: https://gitcode.com/GitHub_Trending/li/LibreHardwareMonitor 想要实时…...
用腾讯云轻量锐驰和对象存储,手把手教你30分钟搞定私人不限速网盘(附SSL证书配置)
零基础30分钟搭建高性能私人网盘:腾讯云轻量锐驰对象存储实战指南 你是否也受够了公有网盘动辄几百KB的下载速度?每次分享文件给朋友,对方总要忍受龟速下载的煎熬。更别提那些突然消失的文件和频繁弹出的会员广告——是时候拥有一个完全自主掌…...
WSABuilds GitHub Actions构建流程解析:自动化CI/CD管道配置
WSABuilds GitHub Actions构建流程解析:自动化CI/CD管道配置 【免费下载链接】WSABuilds Run Windows Subsystem For Android on your Windows 10 and Windows 11 PC using prebuilt binaries with Google Play Store (MindTheGapps) and/or Magisk or KernelSU (ro…...
从YAML到PyTorch模型:拆解Ultralytics YOLO V8/V11中`parse_model`函数的完整工作流
从YAML到PyTorch模型:拆解Ultralytics YOLO V8/V11中parse_model函数的完整工作流 在计算机视觉领域,YOLO系列模型因其卓越的实时检测性能而广受开发者青睐。Ultralytics团队推出的YOLO V8/V11版本不仅延续了这一优势,更通过精心设计的配置文…...
