Skip to content

Commit e29482d

Browse files
authored
Update ch6 0intro.rst
1 parent de8b320 commit e29482d

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

source/chapter6/0intro.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -291,7 +291,7 @@ easyfs文件系统中管理这些磁盘数据的控制逻辑主要集中在 **
291291

292292
第二件事情是把文件访问相关的系统调用与easyfs文件系统连接起来。在easfs文件系统中是没有进程的概念的。而进程是程序运行过程中访问资源的管理实体,而之前的进程没有管理文件这种资源。
293293
为此我们需要扩展进程的管理范围,把文件也纳入到进程的管理之中。
294-
由于我们希望多个进程都能访问文件,这意味着文件有着共享的天然属性,这样自然就有了``open/close/read/write``这样的系统调用,便于进程通过互斥或共享方式访问文件。
294+
由于我们希望多个进程都能访问文件,这意味着文件有着共享的天然属性,这样自然就有了 ``open/close/read/write`` 这样的系统调用,便于进程通过互斥或共享方式访问文件。
295295

296296
内核中的进程看到的文件应该是一个便于访问的Inode,这就要对 ``easy-fs`` crate 提供的 ``Inode`` 结构进一步封装,形成 ``OSInode`` 结构,以表示进程中一个打开的常规文件。文件的抽象 Trait ``File`` 声明在 ``os/src/fs/mod.rs`` 中,它提供了 ``read/write`` 两个接口,可以将数据写入应用缓冲区抽象 ``UserBuffer`` ,或者从应用缓冲区读取数据。应用缓冲区抽象类型 ``UserBuffer`` 来自 ``os/src/mm/page_table.rs`` 中,它将 ``translated_byte_buffer`` 得到的 ``Vec<&'static mut [u8]>`` 进一步包装,不仅保留了原有的分段读写能力,还可以将其转化为一个迭代器逐字节进行读写。
297297

@@ -301,4 +301,4 @@ easyfs文件系统中管理这些磁盘数据的控制逻辑主要集中在 **
301301

302302
对于应用程序而言,它理解的磁盘数据是常规的文件和目录,不是 ``OSInode`` 这样相对复杂的结构。其实常规文件对应的 OSInode 是操作系统内核中的文件控制块数据结构的实例,它实现了 File Trait 定义的函数接口。这些 OSInode 实例会放入到进程文件描述符表中,并通过 sys_read/write 系统调用来完成读写文件的服务。这样就建立了文件与 ``OSInode`` 的对应关系,通过上面描述的三个开发步骤将形成包含文件系统的操作系统内核,可给应用提供基于文件的系统调用服务。
303303

304-
.. [#rex] 霸王龙是最广为人知的恐龙,生存于约6850万年到6500万年的白垩纪最末期, 位于白垩纪晚期的食物链顶端。
304+
.. [#rex] 霸王龙是最广为人知的恐龙,生存于约6850万年到6500万年的白垩纪最末期, 位于白垩纪晚期的食物链顶端。

0 commit comments

Comments
 (0)