项目做得迷糊时,阅读!

21 篇文章 0 订阅
20 篇文章 0 订阅

2009年,区区的第一个任务是编写一个文件系统,其实以前研究操作系统时,最不感兴趣的就是文件系统的部分。以至于到后来查看SQLite的db虚拟机代码时,对其Btree和页缓冲表的实现惊叹不已。

 

手下指导了一个实习生小Z做毕业设计,题目是嵌入式文件系统,又一个文件系统,他说想参考开源的UFFS,重用的念头浮上来。

 

不过后来,重用UFFS的念头又打消了,起因是小Z有一天拿着UFFS的ECC算法让区区给他讲解。UFFS的ECC用的是一个位图定位的算法,相当有趣,由于过去没有相关经验,区区是给合的UFFS作者的PDF讲解才搞清楚的。

这件事情让在下觉得应该再认真考察一下其它文件系统,不然想实现版本和压缩支持可能会很难(后来得知不必实现这两个高级功能)。当时真的很混乱,不知道怎么入手,还好手头有一本偶然买到的《UNIX Internals》,区区擅自利用了三天时间,把书中与文件系统相关的章节细读了一遍。

 

《UNIX Internals》是95年左右写就,当时山寨王Linux还没怎么红,书中讲解的文件系统都是s5fs,FFS,SunSoft,AFZ,NFS,LFS一类的正统行货。然而细心的阅读真得非常有效,之前对FAT、Subversion文件系统设计中的各种疑惑都消失了。

 

最终一个非常简易的通态inode表设计在区区脑瓜中敲定了,虽然不是什么华丽方案^_^。

 

supernode -- inodes -- inode reserved -- blocks -- blocks extend.

基本分区与s5fs一致,同样是超级块+inode+block,差别在于区区的时间有限,所以只定了两个扩展区,能够在以后增强。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值