第一关 文件的删除与恢复
前三问答案及分析过程参见课堂练习7.1
第四问 启动 bochs 虚拟机,删除文件 /usr/root/hello.c 并执行 sync 命令后,该文件对应的目录项的第几个字节由什么变为了什么?
删除前:
删除后:
可以看到:第一个字节由0x86变成0x00
第五问 删除文件 /usr/root/hello.c 后,其索引节点的值是否发生了变化?
查看可知没有变化
第六问 删除文件 /usr/root/hello.c 后,其第一个数据块的值是否发生变化?
查看可知没有变化
第七问 用 bless 软件将 /usr/root/hello.c 对应的目录项复原后,再次启动 bochs 虚拟机,文件 /usr/root/hello.c 是否重新出现?其内容是否能正常读出?
用bless软件把地址0x49c430处的第一个字节由0x00恢复到0x86后保存
再查看0x49c400处的1024个字节,发现hello.c又恢复了,查看能否正常读出:
是可以正常读出的
结果:
第二关 硬链接与软链接
第一问 启动 bochs 虚拟机,创建指向 hello.c 的硬链接 hello-2.c 后,文件 hello.c 的目录项起始地址和索引节点号分别是什么?文件 hello-2.c 的目录项起始地址和索引节点号分别是什么?
启动虚拟机使用命令 ln hello.c hello-2.c 创建硬链接后,启动脚本查看/usr/root目录内容:
发现二者的索引节点号是一样的
第二问 接着启动 bochs 虚拟机来删除文件 hello.c 并执行 sync 后,文件 hello.c 的原目录项的头两个字节是什么?文件 hello-2.c 的目录项的头两个字节是什么?
删除 hello.c 后,再查看:
发现hello.c的索引节点号变成0x00了,但hello-2.c没有变,说明hello-2.c没有被删除
结果: