File tree Expand file tree Collapse file tree 1 file changed +2
-2
lines changed
Expand file tree Collapse file tree 1 file changed +2
-2
lines changed Original file line number Diff line number Diff 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万年的白垩纪最末期, 位于白垩纪晚期的食物链顶端。
You can’t perform that action at this time.
0 commit comments