在这次作业中,我们将探索xv6的log功能。主要就是创建1个crash,然后观察recover的过程。
xv6的log重点是将文件系统所有的磁盘更新操作原子化,比如在创建1个文件时涉及到在目录中添加新入口,并标记新文件的inode为使用中。如果没有log的话,在两次操作之间发送1个crash会导致重启后文件系统处于不正确状态。
第1步修改log.c如下:
#include "mmu.h"
#include "proc.h"
void
commit(void)
{
if (log.lh.n > 0) {
write_log()
write_head();
if(proc->pid > 1) // AAA
log.lh.block[0] = 0; // BBB
install_trans();
if(proc->pid >

本文详细探讨了MIT6.828课程作业中的xv6文件系统日志功能,重点关注如何在crash后进行恢复。通过修改log.c文件,模拟创建文件并引发crash,分析了在不同恢复策略下文件系统状态的错误和原因。讨论了日志恢复过程中内存与磁盘一致性的重要性,并提出了解决问题的思路。
最低0.47元/天 解锁文章
1046

被折叠的 条评论
为什么被折叠?



