EXT2 文件系统操作与实现详解
1. 文件系统基础操作
在文件系统中,文件和目录的管理涉及多种操作,包括删除目录、创建链接、读取和写入文件等。以下将详细介绍这些操作的原理和算法。
1.1 删除目录项
当删除一个目录项时,如果该条目是块中的第一个但不是唯一的条目,或者位于块的中间,需要进行以下操作:
- 将所有后续条目向左移动,覆盖被删除的条目。
- 将被删除条目的rec_len添加到最后一个条目。
- 不改变父文件的大小。
操作前后的块内容对比如下:
| 状态 | 块内容 |
| ---- | ---- |
| 操作前 |xxxxx|ino rlen nlen NAME |yyy|...|zzz|
| 操作后 |xxxxx|yyy|...|zzz (rec_len += rlen)|
可以使用memcpy(dp, cp, size)来实现后续条目的左移。
1.2 实现rmdir功能
编程任务是实现rmdir函数,并将rmdir命令添加到文件系统中。编译并运行该程序,即可演示rmdir的操作。
1.3 创建硬链接(link)
命令link old_file new_