Software fault tolerance in parallel computing systems: new roll-forward checkpointing schemes for modular redundant systems