diff --git a/chapter6_filesystem.md b/chapter6_filesystem.md index 106c9ff47be278391b1b1c7dd419c9e94376a0a5..54b980c4ddc26c6eb83151adf0bcb59162c22b2a 100644 --- a/chapter6_filesystem.md +++ b/chapter6_filesystem.md @@ -321,6 +321,9 @@ PKE文件系统架构如下图所示,图中的RAM DISK在文件系统中的地 VFS对具体的文件系统进行了抽象,构建出一个通用的文件系统模型。这个抽象的文件系统模型由几种VFS层的抽象数据类型组成,下面分别介绍VFS中的这些抽象数据类型。 +VFS的各类数据结构的基本层级关系如下图所示。 +![VFS Structure Hierachy](./pictures/lab4.vfs_sturcture_hierachy.png) + * *vinode* VFS对具体文件系统中的inode进行了抽象,构建出一个通用的vinode对象。vinode对象包含操作系统操作一个文件(或目录)所需要的全部信息,对文件的各种操作都是围绕着vinode来进行的。由此可见,vinode是文件系统中文件访问和操作的核心对象。在PKE中,为了与RFS存储在“磁盘”上的inode进行区分,我们将VFS层的抽象inode对象命名为vinode;而实际存储在磁盘上的inode,则被称为disk inode (简写为dinode)。除了起到区分作用,该名称同时强调了vinode对象是仅存在于内存中的这一事实。vinode会在一个文件被打开时创建,在不被任何dentry(见下文dentry)引用时释放。另外,RFS对应的vinode都会被存储在一个哈希链表中:vinode_hash_table。设置该表的目的主要是为了避免同一个文件被多次打开时,可能产生多个与之对应的vinode的情况出现。因为多个vinode在回写到磁盘时,可能发生数据丢失(后写入的vinode将先写入的vinode覆盖)。vinode的结构如下(见kernel/vfs.h): diff --git a/pictures/lab4.vfs_sturcture_hierachy.png b/pictures/lab4.vfs_sturcture_hierachy.png new file mode 100644 index 0000000000000000000000000000000000000000..2b205708b116c2ba7d447251e7c993172adf993b Binary files /dev/null and b/pictures/lab4.vfs_sturcture_hierachy.png differ