MIT6.828 HW11: crash

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  在这次作业中,我们将探索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 >
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值