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

    文章

    10990

    浏览量

    206733
  • 文件系统
    +关注

    关注

    0

    文章

    273

    浏览量

    19676
收藏 人收藏

    评论

    相关推荐

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

    ,我得到一个通知,要么继续使用连续的存储空间,但是只能有4MB,要么去使用不连续的存储空间,总量可以仍然是8MB,那一刻,我的内心反而是平静的,因为我知道,这就是现实,一个不够优秀的系统是无法满足各种刁钻的需求的,并且我并不想
    的头像 发表于 09-21 14:04 3385次阅读

    [分享]FAT32文件系统论文

      《FAT32文件系统结构的技术参数分析》 下载《FAT32文件系统结构研究》           下载
    发表于 02-03 08:28

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

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

    文件系统

    掉电的危险,并且在下系统引导时不需要文件系统的检查。由于JFFS和JFFS2文件格式是特别为Flash存储器设计的,者都具
    发表于 06-02 09:29

    FAT32文件系统资料

    FAT32文件系统资料
    发表于 08-04 12:43

    znFAT_SD fat32文件系统!!!

    前段时间本人将znFAT_SD文件系统移植到了stm32f107上,工程是用keil4进行编写的。程序中保存了fat32文件系统的所有工能。欢迎大家讨论。qq:490690385!!本人最近在学习嵌入式程序的开发(ucosii),希望与大家
    发表于 06-24 15:17

    FAT32文件系统详解

    FAT32文件系统详解
    发表于 08-17 12:34

    关于yaffs2文件系统

    我用的nand flash是三星的S34ML08G2。其 Page Size: (2048 + 128) bytes; 128-byte spare area。内核已确定支持yaffs2文件系统
    发表于 12-10 23:19

    如何设计基于FAT16文件系统的嵌入式温度记录器?

      闪存技术的不断发展,使得闪存卡(如SD卡、MMC卡等)因其体积小、容量大、可靠高等优点而在嵌入式存储领域得到越来越广泛的应用。FAT16文件系统具有出色的文件管理性能,能被大多数操作系统
    发表于 10-29 06:36

    Stm32文件系统FATFS参考资料分享

    Stm32文件系统FATFS参考资料主要是原子和野火两家的讲解。1.FATFS简介:适合嵌入式小型单片机,是个 独立 的软件层文件系统,我们只需要将底层硬件的读取函数移植到FATFS提供的向下
    发表于 02-28 12:17

    解读在RTThread平台上使用DFS分布式文件系统

    1、RTThread平台使用DFS文件系统  简单介绍了下DFS代码框架和如何在RTThread平台上使用DFS分布式文件系统。工作比较忙先把目前整理的发出来,希望对小伙伴们有帮助,也希望玩过
    发表于 09-15 16:57

    FAT16文件系统有什么缺点?

    FAT16文件系统有什么缺点
    发表于 10-09 07:27

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

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

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

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

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

    NFS(Network File System,网络文件系统)是一种基于网络的文件系统。它可以将远端服务器文件系统的目录挂载到本地文件系统的目录上,允许用户或者应用程序像访问本地
    发表于 05-13 09:45 3586次阅读
    详细<b class='flag-5'>解读</b>NFS <b class='flag-5'>文件系统</b>源代码