Skip to content

Commit 4c78355

Browse files
Merge remote-tracking branch 'refs/remotes/origin/master'
2 parents 65b13d3 + 3de073e commit 4c78355

File tree

3 files changed

+13
-7
lines changed

3 files changed

+13
-7
lines changed

lec9/p2-fsimplement.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ VFS, Virtual File System
148148

149149
#### 文件系统基本数据结构
150150
![w:700](figs/fsoverall.png)
151-
151+
![bg right:40% 90%](figs/fsall.png)
152152

153153
---
154154
#### 文件卷控制块 (`superblock`)
@@ -181,6 +181,7 @@ VFS, Virtual File System
181181
- 文件的 Group ID
182182
- 链接数:有多少文件名指向这个 inode
183183
- 文件数据 block 的位置(直接、间接)
184+
![bg right:40% 90%](figs/fsall.png)
184185

185186
---
186187
#### bitmap块
@@ -189,6 +190,8 @@ bitmap块( `bitmap inode/dnode`)
189190
- dnode使用或者未使用标志位
190191
- 用于空间分配
191192

193+
![bg right:40% 90%](figs/fsall.png)
194+
192195
---
193196
#### 数据块dnode( `data node`)
194197
- 目录和文件的数据块
@@ -197,7 +200,7 @@ bitmap块( `bitmap inode/dnode`)
197200
- 每个block都有编号,以方便inode记录
198201
- inode一般为128B
199202
- data block一般为4KB
200-
203+
![bg right:40% 90%](figs/fsall.png)
201204
---
202205
#### 目录的数据块
203206
![w:850](figs/fsdir.png)
@@ -463,11 +466,12 @@ bitmap块( `bitmap inode/dnode`)
463466
---
464467
#### 文件读操作过程
465468
![w:650](figs/fsread.jpg)
469+
![bg right:40% 90%](figs/fsall.png)
466470

467471
---
468472
#### 文件写操作过程
469-
![w:800](figs/fswrite.jpg)
470-
473+
![w:700](figs/fswrite.jpg)
474+
![bg right:40% 90%](figs/fsall.png)
471475

472476

473477
---

lec9/p3-fsjournal.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,9 @@ backgroundColor: white
8989

9090
考虑一个应用以某种方式更新磁盘结构:将单个数据块附加到原有文件。
9191
- 通过打开文件,调用`lseek()`将文件偏移量移动到文件末尾,然后在关闭文件之前,向文件发出单个4KB写入来完成追加。
92-
92+
- lseek + write 并非原子操作。多个进程可能在 lseek 和 write 之间修改文件,导致偏移量失效。
93+
94+
9395
---
9496

9597
##### 文件系统数据结构
@@ -562,7 +564,7 @@ fsck不了解用户文件的内容,但目录包含由文件系统本身创建
562564
- Journal write:将TxB以及对应的文件操作写入到事务中
563565
- Journal commit:写入TxE,并等待完成。完成后,这个事务是committed。
564566
- Checkpoint:将事务中的数据,分别各自回写到各自的磁盘位置中。
565-
- Free: 一段时间后,通过更新日记帐,超级块将交易记录标记为空闲
567+
- Free: 一段时间后,通过更新日志记录,超级块将交易记录标记为空闲(释放掉)
566568

567569

568570
---

lec9/p4-fs-lab.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -888,7 +888,7 @@ pub struct BlockCache {
888888
3. 从文件系统中获取根目录的 inode 。
889889

890890
```rust
891-
lazy_static! {
891+
lazy_static! {//宏定义静态变量
892892
pub static ref BLOCK_DEVICE = Arc::new(BlockDeviceImpl::new());
893893
......
894894
lazy_static! {

0 commit comments

Comments
 (0)