while revising for an exam, i came across this simple question asking about rollbacks in processes. i understand how rollbacks occur, but i need some validation on my answer. The question:
my confusion results from the fact that there is interprocess communication between the processes. does that change anything in t开发者_如何学JAVAerms of where to rollback? my answer would be R13, R23, R32 and R43. any help is greatly appreciated! thanks!
You need to roll back to the point where the process can be consistently restarted. The inter-process communication means that you cannot have one process recover to after a communication and another to before that communication.
P3 must roll back to R32. So the other processes need to recover back to before any communication which came after that.
There's one rule to follow: you can't roll back to a point where one process has received a message that hasn't been sent yet. If you follow that, your global checkpoint will be consistent.
Also, you have to decide which processes to roll back. Don't throw out work if you don't have to. The only thread you're required to roll back is the faulty one. Others would roll back only in order to make the checkpoint consistent.
As I see it, one answer to (i)-(iv) will be different from the other three (which will be the same).
精彩评论