File tree Expand file tree Collapse file tree 3 files changed +8
-5
lines changed Expand file tree Collapse file tree 3 files changed +8
-5
lines changed Original file line number Diff line number Diff line change @@ -12,9 +12,11 @@ tags: ["tutorial", "os"]
1212
1313** 目标:学习操作系统内存组成**
1414
15- 请打开[ this document] ( http://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/os-dev.pdf ) 第14页, 并且查阅内存结构图
15+ 请打开[ this document] ( https://web.archive.org/web/20211008041419/ http://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/os-dev.pdf) 第14页, 并且查阅内存结构图
1616
17- ![ 内存结构图] ( https://gitcode.net/xnzone/solar/-/raw/master/2021/03/05/20210305173850.png )
17+ 文档新地址:[ ] ( https://github.com/user-attachments/files/19763309/os-dev.pdf )
18+
19+ ![ ] ( https://s2.loli.net/2025/09/28/RJTKUNcXFrBML2l.png )
1820
1921这节课的唯一目的是学习引导扇区保存在哪里
2022
Original file line number Diff line number Diff line change @@ -47,14 +47,14 @@ UNIX的xv6文件系统使用一个块大小是512字节,与磁盘扇区大小
4747
4848我们的文件系统只有一个超级块,在磁盘上总是为数据块1。它的结构定义在` inc/fs.h ` 的` struct Super ` 。数据块0通常保留为引导程序和分区表,所以文件系统通常不使用第一个磁盘块。很多真正的文件系统保留多个超级块,以便于其中一个异常了或者磁盘区域损坏,其他超级块仍然可以使用
4949
50- ![ ] ( https://gitcode. net/xnzone/solar/-/raw/master/2021/10/25154136 .png )
50+ ![ ] ( https://s2.loli. net/2025/09/28/ARpEmiYCHPrhKoB .png )
5151
5252### 文件元数据
5353在我们文件系统中描述文件的元数据结构定义在` inc/fs.h ` 的` struct File ` 。这个元数据包含了文件名,大小,类型(通常是文件或目录)和组成文件块指针。正如上面提到的,我们没有inodes,所以元数据保存在磁盘的目录入口。不像大多数真正的文件系统,我们使用一个` File ` 结构体来代表文件元数据。
5454
5555` struct File ` 的` f_direct ` 数组包含了存储文件前10个块(NDIRECT)的块序号空间,也称为文件的直接(* direct* )块。对于不超过 $10* 4096=40KB$ 的小文件,这意味着所有文件块的块号将直接适应` File ` 结构体本身。对于大文件,需要有位置放置文件块号的其他部分。对于大于` 40KB ` 的任何文件,需要分配额外的磁盘块,称为文件非直接块(* indirect* ),来保存 $4096/4 = 1024$ 额外块号。因此我们文件系统允许文件超过1034个块,或者略高于4MB大小。为了支持更大的文件,真正的文件系统通常支持双和多非直接块
5656
57- ![ ] ( https://gitcode. net/xnzone/solar/-/raw/master/2021/10/25155714 .png )
57+ ![ ] ( https://s2.loli. net/2025/09/28/sjVtISlByg8Cc9M .png )
5858
5959### 目录与常规文件
6060我们文件系统的` File ` 结构体能够表示普通文件和目录;这个由结构体中` type ` 字段来区分。文件系统处理常规文件和目录是一致的,除了它不解释普通文件与数据块内容相关联,然而文件系统解释目录文件内容作为一系列的` File ` 结构体来描述子目录
Original file line number Diff line number Diff line change @@ -66,7 +66,8 @@ E1000能产生调试输出,所以你必须启用指定的日志通道。可能
6666- 定时器环境
6767
6868下面插图显示了不同环境之间的关系
69- ![ ] ( https://gitcode.net/xnzone/solar/-/raw/master/2021/11/02143405.png )
69+
70+ ![ ] ( https://s2.loli.net/2025/09/28/IrGFlo8QK9xsZb5.png )
7071
7172### 核心网络服务器环境
7273核心网络服务器环境是由所有套接字调用分发者和lwIP组成。套接字调度器和文件服务器工作类似。用户环境使用根(` lib/nsipc.c ` )发送IPC消息给核心网络环境。如果你查看` lib/nsipc.c ` ,你可以看到核心网络服务器和文件服务器一样:` i386_init ` 创建带有` NS_TYPE_NS ` 的环境,所以我们扫描` envs ` ,找到特殊的环境类型。对于每个用户环境IPC,网络服务器的调度器调用合适BSD套接字接口函数
You can’t perform that action at this time.
0 commit comments