TpsFs文件系统概述(一)

1、TpsFs简介

       TpsFs(True Power Safe File System)是一款掉电安全的文件系统,该文件系统是SylixOS内建文件系统(专利技术)。TpsFs是基于事务的B+树文件系统:对元数据的修改使用事务提交的机制,保证了文件系统的一致性;使用B+树管理磁盘空间和文件空间,使得存储文件数据与定位速度更快、空间管理效率更高。TpsFs的源码可以在SylixOS Base工程下的"libsylixos/SylixOS/fs/TpsFs/"目录下查看。

2、TpsFs基本数据结构简介

       每一种文件系统都有自己特定的数据结构和管理数据的方式,不同的文件系统其数据结构也有所不同,但所有文件系统也有一定的共性。下面介绍TpsFs中用来管理数据的一些结构。

2.1数据单元

       当文件系统在磁盘分区上创建后,就可以进行数据的读取和存储了。数据在写入磁盘或从磁盘读取时每次操作的数据量称为数据单元,它的大小在建立文件系统时确定。数据单元在不同的文件系统中有不同的称呼方式,例如FAT中的"簇",EXT中的"块"。一个数据单元由若干个连续物理扇区组成,大小总是2的整数次幂个扇区。存储数据时,系统以数据单元为最小单位为其分配存储空间。在TpsFs中,数据单元以"块"为单位,并且最小不能小于4096字节,块大小可以在格式化TpsFs文件系统时通过tpsFsFormat函数的参数指定,通常情况下将其设置为4096字节。tpsFsFormat函数原型如程序清单2- 1所示。

程序清单2- 1 tpsFs格式化函数

errno_t tpsFsFormat (PTPS_DEV pdev, UINT uiBlkSize)

       函数tpsFsFormat原型分析如下:

              函数成功返回ERROR_NONE,失败返回错误号;

              参数pdev是设备对象;

              参数uiBlkSize是块大小。

       块号的定义如程序清单2- 2所示。

程序清单2- 2 块号定义

typedef UINT64 TPS_INUM;

2.2超级块

       超级块用来描述一个文件系统的基本信息,例如文件系统块大小、总块数、文件系统在磁盘分区内的整体布局(数据区、日志区等位置和大小)、已打开文件链表等等。TpsFs将超级块保存在磁盘分区的第0块内,每一个磁盘分区内只有一个超级块结构体。超级块结构体的定义如程序清单2- 3所示。

程序清单2- 3 超级块结构体定义

typedef struct tps_super_block {
UINT                  SB_uiMagic;                  /*  magic数值                 */
UINT                  SB_uiVersion;                /*  版本                      */
UINT                  SB_uiSectorSize;             /*  块设备的扇区大小          */
UINT                  SB_uiSectorShift;
UINT                  SB_uiSectorMask;
UINT                  SB_uiSecPerBlk;              /*  每块扇区数                */
 
UINT                  SB_uiBlkSize;                /*  块大小                    */
UINT                  SB_uiBlkShift;
UINT                  SB_uiBlkMask;
 
UINT                  SB_uiFlags;                 /*  挂载标识                   */
UINT64                SB_ui64Generation;          /*  标识一次格式化用于系统修复 */
UINT64                SB_ui64TotalBlkCnt;         /*  总块数                     */
UINT64                SB_ui64DataStartBlk;     
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值