LoGin b322121dd9
feat(syscall): 添加syscall table的实现 (#1164)
* feat(syscall): 添加syscall table的实现

- 实现syscall table
- 为syscall table适配write/writev、read和readv系统调用

---------

Signed-off-by: longjin <longjin@DragonOS.org>
2025-05-13 18:59:18 +08:00

4.0 KiB
Raw Blame History

:::{note} 本文作者: 龙进

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