鱼C论坛

 找回密码
 立即注册
查看: 2980|回复: 1

[学习笔记] 文件系统 - Overview

[复制链接]
发表于 2020-5-12 18:26:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 赚小钱 于 2020-5-12 18:28 编辑

所有的计算机,都需要存储,读取信息。当一个进程在运行的时候,只能存储有限的数据在进程内存地址空间中。虽然,存储能力受限于虚拟地址空间,但是,对于一般程序而言,是够用的。但是,对于其他程序,比如航空,银行等企业级程序而言,实在是远远不够的。

在程序内存中存储数据还有第二个问题,当程序终止时,所有的数据都会丢失。许多程序,比如数据库,必须有能力将数据保存几周,几个月,甚至是永久。这些程序无法接受,程序终止时,数据消失。

第三点,是我们经常需要解决的问题,多个进程同时读取数据。

因此,对于长期存储,有了三个至关重要的需求:

  • 存储超级大量的数据;
  • 终止使用数据的进程,不能影响数据本身;
  • 多进程同时访问数据。


过去多年,使用磁盘(magnetic disks)作为长期存储介质。近些年,固态硬盘(solid-state drivers)因其内部设计的可靠性,逐渐成为最受欢迎的长期存储介质。同时,固态硬盘也提供了快速的随机读取速率。磁带(tapes)和光盘(optical disks)仍旧是被用作扩展存储,但是他们的性能实在是不高,通常只会用来备份。

在了解硬盘之前,只需要将磁盘看作是一种有如下两种操作的设备即可:

  • 读取 block k;
  • 写入 block l;


实际上,还有更多的操作。但是,通过这两个操作,原则上可以解决长期存储问题。

但是,虽然这些操作可以解决长期存储的问题,但实际上,使用起来是非常不方便的。特别是在,多用户、多进程的大型机上(例如,在服务器上),会出现如下几个问题:

  • 如何查找信息;
  • 如何保证用户数据的隔离性;
  • 如何知道哪些空闲的 block。


这些还只是其中的一部分。
操作系统中,存在非常多的抽象,或者称作虚拟化。在这里,也不例外。操作系统使用了一个抽象概念 file 来解决这个问题。

Files 是由进程创建的信息的逻辑单元。在磁盘上,可能会存在数以千计,甚至是百万级别的文件,而且,这些文件之间是互相独立的(文件本身是独立的)。事实上,有操作系统相关知识的人,可能已经猜到了,file 也是一种类型的地址。和内存地址的区别在于,file 是磁盘上的地址。

进程可以读取已经存在于磁盘的文件,也可以在需要的时候创建文件。磁盘中的信息,必须是持久的,即,不为进程的创建或销毁所影响。文件也应该只在,所有者显式地删除时,才会消失。

虽然,读写文件是最为常见的操作。但是,还有一系列的操作,也同样是设计操作系统时必须要考虑的:结构化(structured),可命名(named),可访问(accessed),可使用(used),可保护(protected),细节(implemented),管理(managed)。以上这些概念,就组成了 File System。

在之后文章中,将会说明,在文件系统中,一个文件都包含了什么,如何命名,保护文件。更细接地,如何使用 linked list 和 bitmaps 追踪可用存储空间。

----------------------------------------------------------------------------------------------------------------------------------------

这将会是一系列的文章,包括书本上的知识,和实际的项目经验。在去年有写过一个生产级别的文件系统,补习过相关的知识,但是,内容太过于碎片化。趁现在有心情,我会在这里和 GitHub 上记录一下吧。

看心情,实现一个精简版的文件系统。

PS: 听说 markdown 在内测了,什么时候才能用啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-12 18:43:00 | 显示全部楼层
沙发
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 05:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表