0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

一文解读文件系统的作用性(一)index块设计

454398 来源:蜗窝科技 作者:驴肉火烧 2020-09-21 14:04 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

距我将全套盗墓笔记成功保存在8MB空间里已经过去了19天58分钟32秒,我渐渐发觉更高、更快、更强的绝不限于奥运精神,也充分体现了人类贪婪的本质,无尽的需求催生出这光怪陆离的大千世界。

就在今天下午,我得到一个通知,要么继续使用连续的存储空间,但是只能有4MB,要么去使用不连续的存储空间,总量可以仍然是8MB,那一刻,我的内心反而是平静的,因为我知道,这就是现实,一个不够优秀的系统是无法满足各种刁钻的需求的,并且我并不想丢掉一半的盗墓笔记,所以我必须使用不连续的存储空间,一个不算坏的消息是,就算是不连续,但是每块最小也有2048字节,并且连续的存储空间是2048字节对齐的,还有什么好说的,撸起袖子加油干。

当时我的脑海中,浮现出了星空的图像,天顶中每颗闪烁的星代表的就是一段文字,我要怎么将它们串在一起呢?我想,首先要解决的是识别问题,即眼前的这颗星属于哪本书?是的,我需要星的索引信息,每条索引信息对应着一段可存储的空间,记录空间在硬盘中的偏移,长度,内容是属于哪本书,对应内容在书内的偏移,这样通过索引信息就可以在硬盘中找到存储着的盗墓笔记的片段了,于是有了如下的设计,

book_name用来存储书名,hd_ofs存储这段存储空间在硬盘中的偏移,file_ofs存储这段存储空间存储的内容在书中的偏移,chunk_len存储这段存储空间的长度,看起来是能工作的,那么这样的设计够不够好呢,答案显然是需要拿出工匠精神再来打磨一下了。

book_name,这里看起来很糟糕,如果书名很长则无法存储完整,如果书名很短则浪费了存储空间,这里真的需要存储一个书名吗?按照我的需求,盗墓笔记全套是8本书,那么第一本书,我这里记录1即可,依次则是2,3,4,...,我只需要数字就可以进行区分,于是新的设计出现了

但是,新的问题又出现了,我能够通过一个个的index对象找到数据块,但是我该如何找到这些index对象呢?由于每个index对象占用12字节,那么将index搓堆存在一个只存储index的数据块内,那么一个块能存170个index,就像下面这样

很好,现在有了一个index块,那么170个index最多只能映射(170 * 2048)字节(340KB)的内容,可我要存储的盗墓笔记不止这么点内容,所以还需要更多的index块

很好,现在有了更多的index块,我能通过index找到想要看的内容,但是index块也是不连续的,我要如何找到index块在哪里呢?其实,我对之前每个数据块填充170个index对象已经感觉难受了,因为170个index对象只使用了2040字节,这样一个数据块就有8字节的浪费,如果这8字节用来存储另一个index块在硬盘中的偏移位置,那么index块之间就能串联在一起,而我要做的就是找到那个入口

经过了两顿烧烤的谈判,我终于赢得了硬盘第1024个数据块的永久使用权,于是第1024数据块就成为了串起整部盗墓笔记的那个入口

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 硬盘
    +关注

    关注

    3

    文章

    1367

    浏览量

    60072
  • 文件系统
    +关注

    关注

    0

    文章

    305

    浏览量

    21043
  • 存储空间
    +关注

    关注

    0

    文章

    55

    浏览量

    11082
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    杰理智能蓝牙音响开发板AC696N:文件系统操作API精讲

    杰理智能蓝牙音响开发板AC696N:文件系统操作API精讲 引言 做 杰理蓝牙音频系列芯片开发 ,播放U盘或SD卡里的MP3文件是最常见的需求。背后离不开文件系统操作:扫描歌曲、打开文件
    发表于 04-27 00:25

    瑞萨RA系列FSP库开发实战指南之FatFs文件系统介绍

    即使读者可能不了解文件系统,读者也定对“文件”这个概念十分熟悉。数据在PC上是以文件的形式储存在磁盘中的,这些数据的形式般为ASCII
    的头像 发表于 03-18 13:47 4602次阅读
    瑞萨RA系列FSP库开发实战指南之FatFs<b class='flag-5'>文件系统</b>介绍

    明晚8点|睿擎文件系统实战:从开发到发布全流程解析

    文件操作到镜像发布,次直播掌握完整开发流程!在嵌入式系统开发中,文件系统是数据存储、配置管理和资源访问的核心基础。然而在实际开发中,文件
    的头像 发表于 11-11 11:53 789次阅读
    明晚8点|睿擎<b class='flag-5'>文件系统</b>实战:从开发到发布全流程解析

    【直播预告】下周三晚8点|睿擎文件系统实战:从开发到发布全流程解析

    文件操作到镜像发布,次直播掌握完整开发流程!在嵌入式系统开发中,文件系统是数据存储、配置管理和资源访问的核心基础。然而在实际开发中,文件
    的头像 发表于 11-06 18:05 2047次阅读
    【直播预告】下周三晚8点|睿擎<b class='flag-5'>文件系统</b>实战:从开发到发布全流程解析

    睿擎派文件系统指南:从开发到发布全流程实践 | 技术解析

    在嵌入式系统开发中,文件系统扮演着至关重要的角色,它负责数据的持久化存储、配置文件管理和资源访问等核心功能。睿擎平台提供了套完整的文件系统
    的头像 发表于 11-05 18:13 8302次阅读
    睿擎派<b class='flag-5'>文件系统</b>指南:从开发到发布全流程实践 | 技术解析

    文件系统,使用iar编译报错,gcc可以正常编译,为什么?

    文件系统,使用iar编译报错,gcc可以正常编译,为什么?
    发表于 09-23 06:54

    文件系统文件怎么循环覆盖的写入数据?

    请教文件系统数据写入的问题。 比如我新建文件,test.txt,写入数据超过512KB后,就从头开始写,后面的数据不删除,从头开始覆盖。 比如原来写了1000条数据,然后从头开
    发表于 09-22 08:20

    如何在 nuc980 上切换到持久文件系统

    我遵循了“NUC980 Linux 4.4 BSP 用户手册EN.pdf”文档,但当我尝试取消选择“初始 RAM 文件系统和 RAM 磁盘 (initramfs/initrd) 支持
    发表于 08-29 07:58

    技术贴|【RK3588】ELF 2开发板如何添加exFAT和NTFS文件系统格式

    基于RK3588设计的ELF2开发板在搭载Desktop22.04系统时,对TF卡的文件系统支持存在以下限制:不支持exFAT格式;支持NTFS格式,但需手动挂载;针对上述兼容性问题,本文将介绍
    的头像 发表于 08-27 17:21 3821次阅读
    技术贴|【RK3588】ELF 2开发板如何添加exFAT和NTFS<b class='flag-5'>文件系统</b>格式

    Linux三大主流文件系统解析

    还在为选择哪个文件系统而纠结?作为名摸爬滚打多年的运维老鸟,我将用最接地气的方式,带你彻底搞懂 Linux 三大主流文件系统的奥秘。
    的头像 发表于 08-05 17:37 1748次阅读

    飞凌嵌入式ElfBoard ELF 1板卡-文件系统简介

    速度快,效率高,其只读的特点有利于保护文件系统免受破坏,提高了系统的可靠。但只读属性同时又是它的大缺陷,使得用户无法对其内容对进扩充。七、RamDisk
    发表于 06-19 17:22

    服务器数据恢复—重装系统导致XFS文件系统分区丢失的数据恢复案例

    服务器数据恢复环境&故障: 台服务器上通过磁盘柜+RAID卡组建的riad5磁盘阵列,服务器上层安装Linux操作系统,搭建XFS文件系统。服务器上层分配个LUN,并划分了两个分
    的头像 发表于 06-12 11:20 917次阅读
    服务器数据恢复—重装<b class='flag-5'>系统</b>导致XFS<b class='flag-5'>文件系统</b>分区丢失的数据恢复案例

    服务器数据恢复—ocfs2文件系统被格式化为Ext4文件系统的数据恢复案例

    服务器存储数据恢复环境&故障: 人为误操作将Ext4文件系统误装入台服务器存储上的Ocfs2文件系统数据卷上,导致原Ocfs2文件系统被格式化为Ext4
    的头像 发表于 06-10 12:03 890次阅读
    服务器数据恢复—ocfs2<b class='flag-5'>文件系统</b>被格式化为Ext4<b class='flag-5'>文件系统</b>的数据恢复案例

    Vsan数据恢复——Vsan分布式文件系统上虚拟机不可用的数据恢复

    台采用VsSAN分布式文件系统的存储设备由于未知原因关机重启。管理员发现上层的虚拟机不可用,存储内的数据丢失。
    的头像 发表于 05-15 17:42 695次阅读
    Vsan数据恢复——Vsan分布式<b class='flag-5'>文件系统</b>上虚拟机不可用的数据恢复

    Linux文件系统打包及镜像制作,触觉智能RK3562开发板演示

    本文介绍Linux开发板文件系统打包及镜像制作的方法,演示Linux文件系统打包及镜像制作,适用于想将配置好的系统环境打包成镜像批量烧录。触觉智能RK3562开发板演示,搭载4核A53处理器,主频
    的头像 发表于 04-28 16:45 1163次阅读
    Linux<b class='flag-5'>文件系统</b>打包及镜像制作,触觉智能RK3562开发板演示