Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update ch6 2fs-implementation.rst #226

Merged
merged 2 commits into from
Oct 27, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions source/chapter6/2fs-implementation.rst
Original file line number Diff line number Diff line change
Expand Up @@ -847,7 +847,7 @@ easy-fs 超级块
---------------------------------------

本层的代码在 ``efs.rs`` 中。
上面介绍了 easy-fs 的磁盘布局设计以及数据的组织方式 -- 即各类磁盘数据结构。但是它们都是以比较零散的形式分开介绍的,并没有体现出磁盘布局上各个区域是如何划分的。实现 easy-fs 的整体磁盘布局,将各段区域及上面的磁盘数据结构结构整合起来就是简易文件系统 ``EasyFileSystem`` 的职责。它知道每个布局区域所在的位置,磁盘块的分配和回收也需要经过它才能完成,因此某种意义上讲它还可以看成一个磁盘块管理器。
上面介绍了 easy-fs 的磁盘布局设计以及数据的组织方式 -- 即各类磁盘数据结构。但是它们都是以比较零散的形式分开介绍的,并没有体现出磁盘布局上各个区域是如何划分的。实现 easy-fs 的整体磁盘布局,将各段区域及上面的磁盘数据结构整合起来就是简易文件系统 ``EasyFileSystem`` 的职责。它知道每个布局区域所在的位置,磁盘块的分配和回收也需要经过它才能完成,因此某种意义上讲它还可以看成一个磁盘块管理器。

注意从这一层开始,所有的数据结构就都放在内存上了。

Expand Down Expand Up @@ -997,7 +997,7 @@ easy-fs 超级块
}
}

inode 和数据块的分配/回收也由 ``EasyFileSystem`` 负责:
inode 和数据块的分配/回收也由 ``EasyFileSystem`` 负责:

.. code-block:: rust

Expand Down Expand Up @@ -1550,4 +1550,4 @@ inode 和数据块的分配/回收也由 ``EasyFileSystem`` 知 负责:
- 第 39 行获取源码目录中的每个应用的源代码文件并去掉后缀名,收集到向量 ``apps`` 中。
- 第 48 行开始,枚举 ``apps`` 中的每个应用,从放置应用执行程序的目录中找到对应应用的 ELF 文件(这是一个 Linux 上的文件),并将数据读入内存。接着需要在 easy-fs 中创建一个同名文件并将 ELF 数据写入到这个文件中。这个过程相当于将 Linux 上的文件系统中的一个文件复制到我们的 easy-fs 中。

尽管没有进行任何同步写回磁盘的操作,我们也不用担心块缓存中的修改没有写回磁盘。因为在 ``easy-fs-fuse`` 这个应用正常退出的过程中,块缓存因生命周期结束会被回收,届时如果块缓存的 ``modified`` 标志为 true ,就会将其修改写回磁盘。
尽管没有进行任何同步写回磁盘的操作,我们也不用担心块缓存中的修改没有写回磁盘。因为在 ``easy-fs-fuse`` 这个应用正常退出的过程中,块缓存因生命周期结束会被回收,届时如果块缓存的 ``modified`` 标志为 true ,就会将其修改写回磁盘。
Loading