Skip to content

Commit 82084d6

Browse files
committed
Merge branch 'main' of github.com:arceos-hypervisor/axvisorbook
2 parents 35c7209 + c8127c8 commit 82084d6

3 files changed

Lines changed: 591 additions & 9 deletions

File tree

docs/design/filesystem/framework.md

Lines changed: 88 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,93 @@ sidebar_position: 1
33
---
44

55
# 框架流程
6+
## 文件系统框架
67

7-
### 系统启动流程
8-
文件系统的初始化是系统启动的关键步骤,流程如下:
8+
Axvisor 文件系统是一个为现代操作系统设计的模块化、分层文件系统架构。它采用虚拟文件系统(VFS)抽象层设计,支持多种文件系统类型,包括 FAT32、EXT4、内存文件系统(RAMFS)、设备文件系统(DEVFS)等,具有高度的可扩展性和灵活性。
99

10-
1. **设备初始化**:初始化块设备驱动
11-
2. **分区扫描**:扫描并识别分区
12-
3. **文件系统检测**:检测各分区的文件系统类型
13-
4. **根文件系统选择**:根据启动参数或默认策略选择根文件系统
14-
5. **文件系统挂载**:挂载根文件系统和其他分区
15-
6. **子文件系统挂载**:挂载/dev, /proc, /sys等子文件系统
10+
### 设计理念
11+
12+
Axvisor 文件系统的设计遵循以下核心原则:
13+
14+
- **模块化设计**:各组件独立开发、测试和维护,降低系统复杂度
15+
- **分层架构**:清晰的抽象层次,便于理解和扩展
16+
- **统一接口**:通过 VFS 提供一致的文件操作接口
17+
- **高性能**:优化的数据结构和算法,支持并发访问
18+
- **可扩展性**:易于添加新的文件系统类型支持
19+
20+
### 架构层次
21+
22+
Axvisor 文件系统采用清晰的分层架构,从上到下分为以下几个层次:
23+
24+
![FILESYSTEM](./images_fs/framework.png)
25+
26+
#### 1. API 层 (API Layer)
27+
API 层为用户提供了一组高级文件操作接口,包括文件读写、目录操作、文件属性管理等。这一层屏蔽了底层文件系统的差异,提供了一致的编程接口。
28+
29+
#### 2. 虚拟文件系统层 (VFS Layer)
30+
VFS 是文件系统的核心抽象层,负责:
31+
- 路径解析和名称管理
32+
- 文件系统挂载和卸载管理
33+
- 文件描述符管理
34+
- 统一的文件操作接口转换
35+
- 缓存管理和优化
36+
37+
#### 3. 具体文件系统层 (Filesystem Implementations)
38+
这一层包含各种具体文件系统的实现,每个文件系统都实现了标准的 VFS 接口:
39+
- **FAT32**:支持 FAT12/FAT16/FAT32 文件系统
40+
- **EXT4**:支持 Linux 标准的 EXT4 文件系统
41+
- **RAMFS**:内存文件系统,用于临时文件存储
42+
- **DEVFS**:设备文件系统,管理设备节点
43+
- **PROCFS**:进程文件系统,提供进程信息访问
44+
45+
#### 4. 存储设备层 (Storage Layer)
46+
存储设备层负责与具体的存储设备进行交互,包括:
47+
- 设备初始化和驱动加载
48+
- 分区扫描和管理
49+
- I/O 操作和调度
50+
51+
52+
### 实现代码结构
53+
```
54+
axfs/
55+
├── src/
56+
│ ├── lib.rs # 模块入口和初始化
57+
│ ├── api/ # 高级API接口
58+
│ │ ├── mod.rs # API模块导出
59+
│ │ ├── file.rs # 文件操作API
60+
│ │ └── dir.rs # 目录操作API
61+
│ ├── fops.rs # 底层文件系统操作
62+
│ ├── root.rs # 根目录和挂载管理
63+
│ ├── mounts.rs # 文件系统挂载实现
64+
│ ├── dev.rs # 设备抽象层
65+
│ ├── fs/ # 具体文件系统实现
66+
│ │ ├── mod.rs # 文件系统模块导出
67+
│ │ ├── fatfs.rs # FAT文件系统
68+
│ │ └─── ext4fs.rs # EXT4文件系统
69+
│ └── partition.rs # 磁盘分区管理
70+
└── Cargo.toml
71+
```
72+
73+
#### 核心模块说明
74+
75+
- **lib.rs**:文件系统模块的入口点,负责初始化和导出公共接口
76+
- **api/**:提供高级文件操作 API,包括文件和目录操作
77+
- **fops.rs**:实现底层文件系统操作,是 VFS 和具体文件系统之间的桥梁
78+
- **root.rs**:管理根目录和全局挂载点
79+
- **mounts.rs**:实现文件系统的挂载和卸载逻辑
80+
- **dev.rs**:设备抽象层,提供统一的设备访问接口
81+
- **fs/**:包含各种具体文件系统的实现
82+
- **partition.rs**:处理磁盘分区识别和管理
83+
84+
85+
## 系统启动流程
86+
87+
文件系统的初始化是系统启动的关键步骤,它确保了操作系统能够正确访问存储设备并提供文件服务。整个启动流程经过精心设计,既保证了系统的可靠性,又提供了灵活的配置选项。
88+
89+
### 详细启动流程
90+
1. 设备初始化:初始化块设备驱动
91+
2. 分区扫描:扫描并识别分区
92+
3. 文件系统检测:检测各分区的文件系统类型
93+
4. 根文件系统选择:根据启动参数或默认策略选择根文件系统
94+
5. 文件系统挂载:挂载根文件系统和其他分区
95+
6. 子文件系统挂载:挂载/dev, /proc, /sys等子文件系统
65.7 KB
Loading

0 commit comments

Comments
 (0)