HITsz OS操作系统实验5:实现简单的Ext2文件系统
run with:
gcc disk.c utils.c superblock.c inode.c dir.c file.c filesystem.c shell.c -o main
./main
完成如下功能:
- 创建文件/文件夹(数据块可预分配);
- 读取文件夹内容;
- 复制文件;
- 关闭系统;
- 系统关闭后,再次进入该系统还能还原出上次关闭时系统内的文件部署。
为实现的文件系统实现了简单的 shell 以及 shell 命令以展示实现的功能。实现了以下shell命令:
ls
- 展示读取文件夹内容mkdir
- 创建文件夹touch
- 创建文件cp
- 复制文件shutdown
- 关闭系统help
- 指令帮助
封装与磁盘交互的底层函数
相关功能:
- 初始化文件系统 -
init_system
- 打开文件系统 -
open_system
- 关闭文件系统 -
close_system
- 封装指令,提供接口
相关功能:
- 初始化超级块 -
init_sp_block
- 将超级块写入disk -
write_sp_block
- 从disk中读出超级块 -
read_sp_block
- 打印超级块信息 -
print_sp_block
- 分配block -
alloc_block
- 分配inode -
alloc_inode
相关功能:
- 初始化inode -
init_inode
- 将inode写入磁盘 -
write_inode
- 读出inode -
read_inode
- 打印inode信息 -
print_inode
相关功能:
- 创建文件 -
make_file
- 复制文件 -
copy_file
- 查找文件 -
find_file
- 初始化文件 -
init_file
相关功能:
- 创建文件夹 -
make_dir
- 查找文件夹 -
find_dir
- 初始化根目录 -
init_root_dir
- 加载根目录 -
read_root_dir
- 初始化文件夹 -
init_dir
- 初始化dir item -
init_dir_item
- 将dir items写入disk -
write_dir_items
- 读出 dir items -
read_dir_items
- 打印文件信息 -
print_dir_item
- 打印文件夹信息 -
print_dir
- 列出指定路径文件夹下文件信息
list_dir
相关功能:
- 主函数,运行shell -
main
- 将命令行输入根据空格进行划分 -
split
- 运行命令 -
run
- 支持指令:
ls
ls <dir path>
touch <file path>
cp <dst path> <src path>
mkdir <dir path>
help
shutdown
封装工具函数