# 概述 — DragonOS dev 文档

备注

本文作者: 龙进

Email: longjin@DragonOS.org

# 概述

在本文中，我们将介绍DragonOS文件系统的架构设计。

## 总览

如下图所示，DragonOS的文件系统相关的机制主要包括以下几个部分：

- 系统调用接口

- 虚拟文件系统

  - 文件抽象（File）

  - 挂载文件系统（MountFS）

- 具体的文件系统

                ┌─────────────────────────────────────────────────┐
                │                                                 │
    Syscall:    │   sys_open, sys_read, sys_write, sys_close,     │
                │                                                 │
                │   sys_lseek, etc..                              │
                │                                                 │
                └───────────────────────┬─────────────────────────┘
                                        │
                                        │
        VFS:                     ┌──────▼─────┐
                                 │            │
                                 │    File    │
                                 │            │
                                 └──────┬─────┘
                                        │
                               ┌────────▼────────┐
                               │                 │
                               │     MountFS     │
                               │                 │
                               └────┬────────────┘
                                    │
       Filesystems:   ┌─────────────┼─────────────┬────────────┐
                      │             │             │            │
                ┌─────▼─────┐ ┌─────▼─────┐ ┌─────▼────┐ ┌─────▼─────┐
                │           │ │           │ │          │ │           │
                │    FAT    │ │   DevFS   │ │  ProcFS  │ │   RamFS   │
                │           │ │           │ │          │ │           │
                └───────────┘ └───────────┘ └──────────┘ └───────────┘

## 系统调用接口

DragonOS的文件系统相关的系统调用接口主要包括以下几个：

- `sys_open`：打开文件

- `sys_read`：读取文件

- `sys_write`：写入文件

- `sys_close`：关闭文件

- `sys_lseek`：定位文件指针

- `sys_mkdir`：创建目录

- `sys_unlink_at`：删除文件或目录（通过参数`flag`区分到底是删除文件还是目录）

- `sys_ioctl`：控制设备 （未实现）

- `sys_fstat`：获取文件状态（未实现）

- `sys_fsync`：同步文件（未实现）

- `sys_ftruncate`：截断文件（未实现）

- `sys_fchmod`：修改文件权限（未实现）

- 其他系统调用接口（未实现）

关于接口的具体含义，可以参考Linux的相关文档。

## 虚拟文件系统（VFS）

VFS是DragonOS文件系统的核心，它提供了一套统一的文件系统接口，使得DragonOS可以支持多种不同的文件系统。VFS的主要功能包括：

- 提供统一的文件系统接口

- 提供文件系统的挂载和卸载机制（MountFS）

- 提供文件抽象（File）

- 提供文件系统的抽象（FileSystem）

- 提供IndexNode抽象

- 提供文件系统的缓存、同步机制（尚未实现）

关于VFS的详细介绍，请见DragonOS虚拟文件系统。

## 具体的文件系统

DragonOS目前支持的文件系统包括：

- FAT文件系统（FAT12、FAT16、FAT32）

- DevFS

- ProcFS

- RamFS

Other Versions v: V0.4.0

Tags
  V0.1.0
  V0.1.1
  V0.1.10
  V0.1.2
  V0.1.3
  V0.1.4
  V0.1.5
  V0.1.6
  V0.1.7
  V0.1.8
  V0.1.9
  V0.2.0
  V0.3.0
  V0.4.0

Branches
  master