Skip to content

Commit d6e0ed3

Browse files
fix: lab4使用更加严谨的用词
1 parent eecfdbb commit d6e0ed3

File tree

3 files changed

+8
-10
lines changed

3 files changed

+8
-10
lines changed

docs/.vitepress/config/zh.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ function sidebarGuide(): DefaultTheme.Sidebar {
6060
{ text: 'Lab 1: Allocator', link: '/lab/lab1' },
6161
{ text: 'Lab 2: Process (Kernel Part)', link: '/lab/lab2' },
6262
{ text: 'Lab 3: Process (User Part)', link: '/lab/lab3' },
63-
{ text: 'Lab 4: Async IO', link: '/lab/lab4' },
63+
{ text: 'Lab 4: VirtIO Driver', link: '/lab/lab4' },
6464
{ text: 'Lab 5: Logging File System', link: '/lab/lab5' },
6565
{ text: 'Lab 6: Inode-based File System', link: '/lab/lab6' },
6666
]

docs/lab/lab4.md

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Lab 4: Async I/O
1+
# Lab 4: VirtIO Driver
22

33
负责助教:[唐傑伟](mailto:22302010060@m.fudan.edu.cn)
44

@@ -32,21 +32,19 @@ git merge lab3-dev
3232

3333
硬盘、SD卡等一类设备都是块设备。块设备的特点是数据的读写以块(block)为单位,一次性读取或写入固定大小的数据块。为了实现对块设备的高效管理和操作,操作系统通常会提供一个 I/O 框架,用于抽象和管理这些块设备的访问。
3434

35-
在现代操作系统中,I/O 框架主要分为同步 I/O 和异步 I/O 两种模式。同步 I/O 会阻塞调用的进程,直到 I/O 操作完成。而异步 I/O 则允许进程发起 I/O 操作后立即返回,不会阻塞进程的执行流,从而提高系统的并发度。在本实验中,我们将重点关注异步 I/O 的实现。
35+
在现代操作系统中,I/O 框架主要分为同步 I/O 和异步 I/O 两种模式。同步 I/O 会阻塞调用的进程,直到 I/O 操作完成。而异步 I/O 则允许进程发起 I/O 操作后立即返回,不会阻塞进程的执行流,从而提高系统的并发度。在本实验中,我们将重点关注同步 I/O 的实现。
3636

37-
### 2.1 基本逻辑
38-
39-
异步 I/O 的基本逻辑如下:
37+
I/O 的基本逻辑如下:
4038

4139
* ****:块设备驱动向设备发送读请求和目标地址,然后等待请求完成。此时发起请求的进程可以休眠,调度器可以调度其他进程(异步)。请求完成后,内核通知休眠进程读请求已完成,数据已准备好。
4240
* ****:块设备驱动向设备发送写请求、目标地址以及待写入的数据,等待直到设备完成写入。
4341

4442
> [!important]
4543
> **思考**:对于写操作,你能设计出一种机制,让我们无需等待中断,且不会引发一致性问题吗?即 A 发起了写 DATA 到 ADDR 请求后立刻返回,不等待写操作完成,此时 B 读 DATA 可以读出 A 刚刚写入的内容。
4644
47-
### 2.2 本实验具体逻辑
45+
### 2.1 本实验具体逻辑
4846

49-
本实验异步 I/O 的具体逻辑如下:
47+
本实验 I/O 的具体逻辑如下:
5048

5149
<figure><img src="/assets/lab4-1.png" alt=""><figcaption></figcaption></figure>
5250

@@ -64,7 +62,7 @@ git merge lab3-dev
6462
> [!info]
6563
> **OS (H) Labs 的历史**
6664
>
67-
> 在 2023 秋季及以前版本的实验中,我们面向的平台是树莓派3B,块设备驱动包含了在树莓派上读写 SD 卡的逻辑。然而,[读写 SD 卡的逻辑非常复杂,多达千余行](https://github.com/FDUCSLG/OS-23Fall-FDU/blob/lab5/src/driver/sddef.h),缺乏可读性和可维护性。因此,从 2024 秋季开始,我们转向 virt 平台(Lab 0 中简要介绍过),极大简化了块设备驱动的逻辑,以期帮助大家更好地理解异步 I/O 的相关知识。
65+
> 在 2023 秋季及以前版本的实验中,我们面向的平台是树莓派3B,块设备驱动包含了在树莓派上读写 SD 卡的逻辑。然而,[读写 SD 卡的逻辑非常复杂,多达千余行](https://github.com/FDUCSLG/OS-23Fall-FDU/blob/lab5/src/driver/sddef.h),缺乏可读性和可维护性。因此,从 2024 秋季开始,我们转向 virt 平台(Lab 0 中简要介绍过),极大简化了块设备驱动的逻辑,以期帮助大家更好地理解 I/O 的相关知识。
6866
6967
VirtIO 是一种现代化的虚拟设备接口,它广泛用于虚拟机中,以提供高效的 I/O 设备模拟。本实验中,我们将利用 `virtio-blk-device` 作为我们的块设备。这意味着我们的块设备是一个虚拟的块设备,块设备内的数据由宿主机共同提供。
7068

docs/lab/lab6.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Lab 6: Inode
1+
# Lab 6: Inode-based File System
22

33
负责助教:[唐傑伟](mailto:22302010060@m.fudan.edu.cn)
44

0 commit comments

Comments
 (0)