Skip to content

Commit f5f2afa

Browse files
committed
update lec9:p2
1 parent 1ab1024 commit f5f2afa

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

lec9/p2-fsimplement.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,36 @@ backgroundColor: white
106106
- 数据块(`data block`
107107
![bg right:51% 100%](figs/fsdisk.png)
108108

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`则关注于提供一个统一的、文件系统无关的操作接口。 -->
109139
---
110140

111141
#### 文件系统的组织视图

0 commit comments

Comments
 (0)