File tree 1 file changed +30
-0
lines changed
1 file changed +30
-0
lines changed Original file line number Diff line number Diff line change @@ -106,6 +106,36 @@ backgroundColor: white
106
106
- 数据块(` data block ` )
107
107
![ bg right:51% 100%] ( figs/fsdisk.png )
108
108
109
+
110
+ <!-- 在UNIX及类UNIX系统中,`inode`和`vnode`是两种重要的数据结构,用于表示文件系统中的文件和其他对象。这两个术语都是文件系统实现中的核心概念。
111
+
112
+ ### Inode
113
+ **全称:** Index Node
114
+
115
+ **定义:**
116
+ `inode`是UNIX文件系统的一个基本概念,它包含了关于文件系统中某个文件的几乎所有信息,除了文件名。每个文件或目录都有一个唯一对应的`inode`,其中存储了文件的元数据,比如:
117
+ - 文件的权限(读、写、执行)
118
+ - 文件的所有者和组
119
+ - 文件大小
120
+ - 文件创建、访问和修改时间
121
+ - 指向文件实际数据块的指针
122
+ - 链接数(即有多少文件名指向这个inode)
123
+
124
+ `inode`通过编号进行索引,而不是通过文件名。文件名存储在目录中,与`inode`号相关联,这样设计可以允许硬链接等功能的实现。
125
+
126
+ ### Vnode
127
+ **全称:** Virtual Node
128
+
129
+ **定义:**
130
+ `vnode`是一个更高级的抽象,最初由Sun Microsystems为其网络文件系统(NFS)开发。`vnode`为操作系统内核提供了一个统一的文件接口,使得不同类型的文件系统(如本地磁盘文件系统、网络文件系统等)之间的交互变得透明化。每个`vnode`对象代表一个具体的文件系统对象,可以是文件、目录或者其他任何类型的文件系统对象。
131
+
132
+ `vnode`的主要任务是抽象出文件操作和文件类型的细节,从而允许操作系统通过相同的接口与不同的底层文件系统进行交互。它包含了指向具体文件操作函数的指针,这些操作函数依赖于文件所在的具体文件系统。
133
+
134
+ ### 关系和区别
135
+ - **关系:** 在许多UNIX实现中,每个`vnode`结构通常包含一个指向`inode`的指针(如果底层文件系统使用`inode`机制的话)。这样,`vnode`可以被看作是`inode`的一个扩展或者包装,提供了更广泛的文件系统支持。
136
+ - **区别:** `inode`直接关联于UNIX传统文件系统(如UFS),而`vnode`为操作系统提供了一个抽象层,使得文件系统的具体实现对上层透明,支持多种类型的文件系统共存。
137
+
138
+ 总之,`inode`和`vnode`都是处理文件系统对象的关键数据结构,但它们服务于不同层面的需要:`inode`更多关注于文件的物理属性和存储,而`vnode`则关注于提供一个统一的、文件系统无关的操作接口。 -->
109
139
---
110
140
111
141
#### 文件系统的组织视图
You can’t perform that action at this time.
0 commit comments