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

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

3天内不再提示

一文解读文件系统的作用性(二)

454398 来源:蜗窝科技 作者:驴肉火烧 2020-09-21 14:17 次阅读

Linux发展到现今,在fs目录下我们可以看到形形色色的文件系统,眼花缭乱的同时首先需要回答的问题是,为什么会有文件系统这个东西呢?我想如果能搞清楚这个问题,会帮助大家更好的理解文件系统,那么我就尝试着来模拟一次文件系统的演进过程,于是,我们来到了那一天,那天之前,人们还没有文件系统的概念。

友情提示 : 下面将在荒诞的场景下演进人类合理的诉求

神说,要有光,于是,光照大地

神说,要有风,于是,风动四方

神说,人类要记住神,于是,有了传说

神说,怕你们忘了,得记下来,于是,有了文字,信息被存储在石板上,竹片上,纸张上,硬盘里,flash中

当信息能存在硬盘中的时候,人类如获至宝,如此大的存储量,我们能装下全世界图书馆的馆藏,于是,我们想先放一套盗墓笔记进去。

好嘞,于是,我一个字一个字的将精彩的内容顺序存储在硬盘中,终于,全套的盗墓笔记被存储在硬盘中了,还没来得及高兴,就傻眼了,我不想看秦岭神树,怎么办,这并难不倒我,略加思索,就能想到解决方案,因为是顺序存储的,从开始的地方一直读下去,当恰好跳过秦岭神树章节内容的时候,就做一个标记,记录已经跳过的字节数,下次再看的时候,就直接读到硬盘对应的位置即可,经过一番努力,我找到了并把这个字节数写在了一张纸条上,以便下次可以直接读取,避免一次次的遍历。

后来,我开始有点不耐烦了,因为这张纸条里面的内容越来越多,比如最后一章的位置,终极第一次出现的位置等等,有时我甚至记不住我需要寻找的标记是否在纸条中了,终于有一天,这张纸条丢了,我只能呵呵并且从心底认为,仅仅是顺序存储无法满足我的需求,我需要管理这些内容。

我想,最起码我需要能把全套的盗墓笔记分为8本书吧,只要根据书名,比如邛楼石影,我就立刻能找到对应的内容,我立刻想到了最简单的解决方案,仍然使用顺序存储,只不过在内容录入的时候,给每本书分100MB的存储空间,这样我如果想看第7本,那么直接从600MB偏移开始即可,那么一套盗墓笔记只需要800MB就可以存储,但是,我很快又有了一个更优的方案,在每本书的100MB可用空间内,再进行细分,给每章节进行划分,假设每本书有50章,那么每章节就是2MB空间,这样每章节按照2MB对齐,我要找第6本书的第30章节,就是(500 + 29 * 2)MB 偏移,我甚至都有点洋洋自得了,简单的设计一下就可以再也不用依赖那张小纸条(已遗失)了。

但是,很快我又遇到了新的挑战,因为这块硬盘不是我的,开始说好的800MB没有了,我被要求只能使用8MB来存储全套的盗墓笔记,原先的设计继续使用,每章只能分到20KB,这样有些内容多的章节会越界,而有些内容少的章节又不够饱满,那些没有被利用起来的空间此时显得的是那么的珍贵,于是我开始了小心翼翼字斟句酌的重新设计。

看起来,顺序存储是最节约空间的,那么只有将小纸条(已遗失)的内容也存储在硬盘中了。于是,喝下一罐可乐后,我发觉将章节抽象成一个章节类是一个不错的注意,每个章节是该类的一个对象实例,类成员包括章节名称,章节起始位置,章节字数,每个对象都64字节对齐,这样400章的索引信息只需要25KB即可完成存储,我大大方方的将全部的章节类对象存储在8MB的前32KB区域,后面剩余的全部顺序存储内容,就这样,随着需求的不断增加,我的设计也渐渐开始有文件系统的影子了,尽管我并不知道,但是一切就这样发生了,是那么的自然。

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

    关注

    87

    文章

    11236

    浏览量

    209024
  • 文件系统
    +关注

    关注

    0

    文章

    284

    浏览量

    19887
收藏 人收藏

    评论

    相关推荐

    转载[红尘有约]之完整版《DSP之SD卡与文件系统彻底研究

    :SD卡分类、C5509读写SD卡、解读FAT32文件系统以及其它内容。在编写以及调试过程中,遇到些困难,在文中已经标注出来希望大家能少走弯路。同时也感谢广大网友的支持,在解读FAT
    发表于 03-03 09:47

    FAT32文件系统浅析

    FAT32文件系统浅析: Windows95 OSR2 和Windows 98 开始支持FAT32文件系统,它是对早期DOS 的FAT16 文件系统的增强,由于文件系统的核心- -
    发表于 09-14 08:02 62次下载

    FAT32文件系统结构的技术参数分析

    FAT32文件系统结构的技术参数分析:详细分析了FAT32 的主引导记录、FAT32引导记录、文件分配表、文件目录表、FAT32区在文件系统结构中所处的位置FAT32
    发表于 09-26 10:31 57次下载

    XfS文件系统,XfS文件系统是什么意思

    XfS文件系统,XfS文件系统是什么意思 XfS文件系统是SGI开发的高级日志文件系统,XFS极具伸缩,非常健壮。所幸的是SGI将其移植
    发表于 03-29 10:39 4254次阅读

    FAT32文件系统是什么意思

    FAT32文件系统是什么意思  ()FAT32 文件系统将逻辑盘的空间划分为三部分,依次是引导区(BOOT区)、文件
    发表于 04-15 15:53 2w次阅读

    fat32_fat32文件系统

    本内容讲述了fat32_fat32文件系统的基础内容,涉及FAT32定义,功能,fat32兼容等及fat32转ntfs知识
    发表于 05-21 16:41 5882次阅读

    debian安装zfs文件系统

    ZFS文件系统的英文名称为Zettabyte File System,也叫动态文件系统,是第个128位文件系统。最初是由Sun公司为Solaris 10操作
    的头像 发表于 02-12 16:47 1.1w次阅读
    debian安装zfs<b class='flag-5'>文件系统</b>

    文件系统是什么?浅谈EXT文件系统历史

    在先前关于Linux文件系统的文章中,我很想去深入地讨论更多EXT文件系统的特性的信息。所以,首先让我们来回答这个问题:什么是文件系统文件系统
    发表于 06-28 09:03 5670次阅读
    <b class='flag-5'>文件系统</b>是什么?浅谈EXT<b class='flag-5'>文件系统</b>历史

    Ext4文件系统新特性

    任何Ext3文件系统都可以轻松的迁移到Ext4文件系统,你只需要在只读模式下运行几条命令即可。这就意味着你完全可以不格式化硬盘、不重装操作系统、不重装软件环境,就能够顺利的升级到Ext4文件系
    发表于 04-27 19:30 1287次阅读

    详细解读NFS 文件系统源代码

    NFS(Network File System,网络文件系统)是种基于网络的文件系统。它可以将远端服务器文件系统的目录挂载到本地文件系统
    发表于 05-13 09:45 3835次阅读
    详细<b class='flag-5'>解读</b>NFS <b class='flag-5'>文件系统</b>源代码

    FAT32文件系统说明

    FAT32文件系统。在逻辑盘(硬盘的分区)超过 512 兆字节时使用这种格式,会更高效地存储数据,减少硬盘空间的浪费,般还会使程序运行加快,使用的计算机
    发表于 03-16 11:27 16次下载

    FAT32文件系统基础知识

    FAT32文件系统基础知识免费下载。
    发表于 06-11 09:16 31次下载

    FATFS文件系统详解

    文件系统负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。即在磁盘上组织
    发表于 11-29 09:51 29次下载
    FATFS<b class='flag-5'>文件系统</b>详解

    如何完善根文件系统

    在用 BusyBox 构建根文件系统一中介绍了根文件系统的制作,rootfs制作完成后测试时,提示无法运行“/etc/init.d/rcS”这个文件,说明rootfs仍然不够完善,下
    的头像 发表于 04-18 15:26 1130次阅读
    如何完善根<b class='flag-5'>文件系统</b>

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

    由于工作人员的误操作,将Ext4文件系统误装入到存储中Ocfs2文件系统数据卷上,导致原Ocfs2文件系统被格式化为Ext4文件系统。 由于Ext4
    的头像 发表于 12-04 10:49 428次阅读
    服务器数据恢复—ocfs2<b class='flag-5'>文件系统</b>被误格式化为Ext4<b class='flag-5'>文件系统</b>的数据恢复案例