文件系统简介
SylixOS 提供了多种标准的文件系统,方便用户使用,这些文件系统是 SylixOS 内建的,如果需要更多的文件系统,如 NTFS 则可以通过内核模块的形式加入。SylixOS 的文件系统实际上是一组虚拟的设备驱动,它提供两组 API 接口,对上符合 I/O 系统标准,对下要求设备驱动符合块设备标准。文件系统在 I/O 系统中的结构,如下图所示。
SylixOS 文件系统使用 I/O 系统提供的标准接口进行挂载,然后通过标准 I/O 操作函数进行访问,换句话说,操作一个普通文件与操作一个设备文件没有任何区别。
SylixOS 目前内建的文件系统包括:
- TpsFS 文件系统
- ROOT 文件系统
- PROC 文件系统
- RAMFS 文件系统
- FAT 文件系统
- YAFFS 文件系统
- NFS 文件系统
- ROMFS 文件系统
- GlusterFS 分布式文件系统
- ISO9660 文件系统
其中 ROMFS 文件系统是只读文件系统,系统的关键性文件都可以放在此文件系统中确保安全。如果通过 mount 挂载文件系统时 FAT、NFS,YAFFS 也都可以挂载成只读文件系统。
PROC 文件系统是保存操作系统信息和进程信息的文件系统,这个文件系统对应的文件实体都在操作系统内核中,是内核反馈出来的运行参数和信息,例如每一个进程的进程号都有一个对应的目录,里面存放着进程当前运行的信息,例如:进程对应的可执行文件,进程打开的文件描述符表,进程消耗的内存信息,进程内部的动态链接库信息等。SylixOS 内部所有的设备(包括文件系统)都必须挂载到根文件系统上,根文件系统的设备名称非常特殊,为:“/”。所有的设备或者文件绝对路径都是以根符号起始,也就是说,操作系统查询一个设备总是从根文件系统开始。
SylixOS 还提供了一些方便文件系统使用的组件,它们包括:磁盘分区检查工具,磁盘缓冲器,磁盘自动挂载工具等。
其中磁盘分区检查工具可以自动地检查一个磁盘的分区情况,并且生成对应分区的逻辑设备,每个逻辑设备都可以进行文件系统挂载。
磁盘缓冲器是一个特殊的块设备,他可以介于文件系统和磁盘之间,由于磁盘是低速设备,磁盘的读写速度远远低于 CPU,所以为了解决这种速度不匹配,SylixOS 提供了对应块设备的缓冲器。它可以极大地减少磁盘 I/O 的访问率同时提高系统性能。当然,引入磁盘缓冲器的原理同 CPU 的 CACHE 一样,所以它会带来存储器与磁盘中的数据短时间内不一致的现象,这个问题可以通过 sync 函数、fsync 函数或者 fdatasync 函数调用来同步数据。其中 sync 函数将阻塞当前线程,然后将系统中需要从缓存中回写的数据全部写入到设备中再返回。fsync 函数表示将指定文件的缓存数据同步到物理磁盘中,fdatasync 函数表示将指定文件的数据部分同步写入物理磁盘。
磁盘自动挂载工具是将很多磁盘工具封装在一起的一个工具集。设备可以通过热插拔事件将物理磁盘块设备交给磁盘自动挂载工具,这个工具首先会为这个磁盘开辟磁盘缓冲,然后会自动进行磁盘分区检查,最后生成对应每个分区的虚拟块设备。这个工具会识别每一个分区的文件系统类型,并装载与之对应的文件系统,这样从用户角度来说,就可以在操作系统目录中看到对应挂载的文件系统目录了。带有磁盘缓冲器和分区处理工具的 SylixOS 块设备结构,如下图所示。