【问题标题】:simple process rollback question简单的流程回滚问题
【发布时间】:2011-01-16 10:37:47
【问题描述】:

在复习考试时,我遇到了一个关于流程回滚的简单问题。我了解回滚是如何发生的,但我需要对我的答案进行一些验证。 问题:

我的困惑是由于进程之间存在进程间通信这一事实。这会改变回滚的位置吗?我的答案是 R13、R23、R32 和 R43。任何帮助是极大的赞赏!谢谢!

【问题讨论】:

    标签: java multithreading process parallel-processing rollback


    【解决方案1】:

    您需要回滚到可以持续重新启动进程的点。进程间通信意味着您不能让一个进程在通信之后恢复到通信之前。

    P3 必须回滚到 R32。因此,其他进程需要恢复到之后的任何通信之前。

    【讨论】:

    • 是的,这很有道理!谢谢!所以假设 P4 和任何进程之间没有通信——那么 P4 可以简单地回滚到 R43,对吗?而不是之前它必须回滚到 R32?
    【解决方案2】:

    要遵循一条规则:您不能回滚到某个进程已收到尚未发送的消息的点。如果您遵循这一点,您的全局检查点将是一致的

    此外,您必须决定回滚哪些进程。如果没有必要,不要丢掉工作。您需要回滚的唯一线程是有故障的线程。其他人只会回滚以使检查点保持一致。

    在我看来,(i)-(iv) 的一个答案将与其他三个不同(它们将是相同的)。

    【讨论】:

    • 谢谢!好吧,我同意你的观点,但不同意你的回答。实际上,我只是顿悟了-问题说明了每个过程。答案应该是:i)P1-> R13 ii)P1->R13,P2->R23 iii)P1->r13,P2->R23,P3->R32 iv)P4->R43。你同意吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多