我的OS | 一个文件系统的设计与实现

本文介绍了一个名为CFS的文件系统设计,包括启动区+超级块的结构,目录与i-node的格式,以及格式化、挂载、同步、创建、写入和读取等关键操作。CFS的inode设计小巧,通过间接块实现大文件支持,适合小型存储系统。代码部分展示了主要函数的功能和实现。
摘要由CSDN通过智能技术生成

今天,笔者要设计一个类似ext2的文件系统CFS (cunix file-system),在https://github.com/pengruiyang-cpu/rlib上的cfs.c和cfs.h。

设计

不管啥样的文件系统,他都是由这几个部分组成的:

  • 启动区
  • 超级块
  • 根目录
  • 数据区

(NTFS, FAT系列文件系统将超级块放到了启动区内)

所以,咱们就一个个的分析,一个个设计吧。

启动区 + 超级块

CFS的启动区就放在超级块的前512个字节里头,里面只放了代码,文件系统的全部信息都存储在超级块4096字节中。他们分别是(参考了Minix FS):

  • 启动区(512字节)
  • 魔数 (1328E3B
  • 块数量(一块是4096字节,4KB)
  • 块位图的块号码
  • 根目录的块号码
  • 保留(可能作为loader,3568字节)

需要特别说明的是第二个魔数,研究过Linux的应该能想到magic这个单词,Linux中reboot的magic是他的生日,他大女儿的生日和他二女儿三女儿的生日,CFS中这个字段必须位1328E3B,否则在进行挂载的时候会警告。
这里面的块位图和根目录都只是指他们的块号码,并不

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值