第40章文件系统实现.PDFVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

40.1思考方式357

第40章文件系统实现

第40章文件系统实现

本章将介绍一个简单的文件系统实现,称为VSFS(VerySimpleFileSystem,简单文件

系统)。它是典型UNIX文件系统的简化版本,因此可用于介绍一些基本磁盘结构、访问方

法和各种策略,你可以在当今许多文件系统中看到。

文件系统是纯软件。与CPU和内存虚拟化的开发不同,我们不会添加硬件功能来使文

件系统的某些方面更好地工作(但我们需要注意设备特性,以确保文件系统运行良好)。由

于在构建文件系统方面具有很大的灵活性,因此人们构建了许多不同的文件系统,从AFS

(Andrew文件系统)[H+88]到ZFS(Sun的Zettabyte文件系统)[B07]。所有这些文件系统

都有不同的数据结构,在某些方面优于或逊于同类系统。因此,我们学习文件系统的方式

是通过案例研究:首先,通过本章中的简单文件系统(VSFS)介绍大多数概念。然后,对

真实文件系统进行一系列研究,以了解它们在实践中有何区别。

关键问题:如何实现简单的文件系统

如何构建一个简单的文件系统?磁盘上需要什么结构?它们需要记录什么?它们如何访问?

40.1思考方式

考虑文件系统时,我们通常建议考虑它们的两个不同方面。如果你理解了这两个方面,

可能就理解了文件系统基本工作原理。

第一个方面是文件系统的数据结构(datastructure)。换言之,文件系统在磁盘上使用哪

些类型的结构来组织其数据和元数据?我们即将看到的第一个文件系统(包括下面的

VSFS)使用简单的结构,如块或其他对象的数组,而更复杂的文件系统(如SGI的XFS)

使用更复杂的基于树的结构[S+96]。

补充:文件系统的心智模型

正如我们之前讨论的那样,心智模型就是你在学习系统时真正想要发展的东西。对于文件系统,你

的心智模型最终应该包含以下问题的答案:磁盘上的哪些结构存储文件系统的数据和元数据?当一个进

程打开一个文件时会发生什么?在读取或写入期间访问哪些磁盘结构?通过研究和改进心智模型,你可

以对发生的事情有一个抽象的理解,而不是试图理解某些文件系统代码的细节(当然这也是有用的!)。

文件系统的第二个方面是访问方法(accessmethod)。如何将进程发出的调用,如open()、

read()、write()等,映射到它的结构上?在执行特定系统调用期间读取哪些结构?改写哪些

结构?所有这些步骤的执行效率如何?

如果你理解了文件系统的数据结构和访问方法,就形成了一个关于它如何工作的良好

358第40章文件系统实现

心智模型,这是系统思维的一个关键部分。在深入研究我们的第一个实现时,请尝试建立

你的心智模型。

40.2整体组织

我们现在来开发VSFS文件系统在磁盘上的数据结构的整体组织。我们需要做的第一件

事是将磁盘分成块(block)。简单的文件系统只使用一种块大小,这里正是这样做的。我们

选择常用的4KB。

因此,我们对构建文件系统的磁盘分区的看法很简单:一系列块,每块大小为4KB。

在大小为N个4KB块的分区中,这些块的地址为从0到N−1。假设我们有一个非常小的磁

盘,只有64块:

现在让我们考虑一下,为了构建文件系统,需要在这些块中存储什么。当然,首先想

到的是用户数据。实际上,任何文件系统中的大多数空间都是(并且应该是)用户数据。

我们将用于存放用户数据的磁盘区域称为数据区域(dataregion),简单起见,将磁盘的固定

部分留给这些块,例如磁盘上64个块的最后56个:

正如我们在第39章中了解到的,文件系统必须记录每个文件的信息。该信息是元数据

(metadata)的关键部分,并且记录诸如文件包含哪些数据块(在数据区域中)、文件的大小,

其所有者和访问权限、访问和修改时间以及其他类似信息的事情。为了存储这些信息,文

件系统通常有一个名为inode的结构(后面会详细介绍inode)。

文档评论(0)

tina0229 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档