根据Ext2相关原理实现的简易文件系统,包含基本的文件组织实现、文件/目录的增删查改操作;
- 文件组织实现
- 本地创建Myfilesystem.os文件;
- superblock,超级块,包含文件系统信息;
- inode,索引节点,与文件/目录一一对应,包含文件的基本信息;
- dentry,目录,包含该目录下目录项的信息(inode id & 文件名);
- 以bitmap维护data block和inode id的占用情况;
- 实现superblock-inodeBitmap-blockBitmap-inodetable-data的基本分区形式(这个的blockBitmap能维护的空间大小有限,较大的文件系统中应该以多块组的形式组织,每个块组中有自己的bitmap);
- 实现基本的非连续文件页组织形式,代码里一页为 1 KB,仅实现直接索引+ 一级间接索引(通常应该有三级),对应的最大文件大小为 351 KB;
- 文件增删查改
- 支持相对路径绝对路径
- dir:列举目录项;
- sum:显示文件系统使用情况;
- exit:退出;
- createFile [filename] [size]: 创建文件并指定文件大小,作为demo不考虑文件类型,所以这里写入的是指定长度的随机字符串;
- deleteFile [filename]:删除文件;
- createDir [path]: 创建目录;
- changeDir [path]: 相当于 cd;
- cat [filename]:输出文件内容;
- cp [file1] [file2]: 拷贝文件;
本科os做的项目,仅作学习参考