5.25" 软盘:单面 180 KiB
相当小的文件系统
文件的实现方式
struct block *
的链表目录的实现方式
struct dentry[];
哪种方式的缺陷是致命、难以解决的?
集中存储的指针容易损坏?存 $n$ 份就行!
RTFM 得到必要的细节
if (CountofClusters < 4085) {
// Volume is FAT12 (2 MiB for 512B cluster)
} else if (CountofCluster < 65525) {
// Volume is FAT16 (32 MiB for 512B cluster)
} else {
// Volume is FAT32
}
“FAT” 的 “next” 数组
0
: free; 2...MAX
: allocated; ffffff7
: bad cluster; ffffff8-ffffffe
, -1
: end-of-file以普通文件的方式存储 “目录” 这个数据结构
vector<struct block *> file
的头部?首先,观察 “快速格式化” (mkfs.fat
) 是如何工作的
然后,把整个磁盘镜像 mmap 进内存
另一个有趣的问题:文件系统恢复
SecPerClus
, BytsPerSec
, FATSz32
, BPB_RootClus
, ...)性能
可靠性