khả năng chịu lỗi phần cứng. Ví dụ về các loại dự phòng thông tin này bao gồm phát hiện lỗi và sửa lỗi mã. Dữ liệu đa dạng (không đơn giản bản sao dự phòng) có thể được sử dụng để chịu đựng lỗi phần mềm. | Introduction 21 hardware fault tolerance. Examples of this type of information redundancy include error-detecting and error-correcting codes. Diverse data not simple redundant copies can be used for tolerating software faults. A data re-expression algorithm DRA produces different representations of a module s input data. This transformed data is input to copies of the module in data diverse software fault tolerance techniques. Data diversity is presented in more detail in the following chapter. Techniques that utilize diverse data are described in Chapter 5. Temporal Redundancy Temporal redundancy involves the use of additional time to perform tasks related to fault tolerance. It is used for both hardware and software fault tolerance. Temporal redundancy commonly comprises repeating an execution using the same software and hardware resources involved in the initial failed execution. This is typical of hardware backward recovery roll-back schemes. Backward recovery schemes used to recover from software faults typically use a combination of temporal and software redundancy. Timing or transient faults arise from the often complex interaction of hardware software and the operating system. These failures which are difficult to duplicate and diagnose are called Heisenbugs 36 . Simple replication of redundant software or of the same software can overcome transient faults because prior to the reexecution time the temporary circumstances causing the fault are then usually absent. If the conditions causing the fault persist at the time of reexecution the reexecution will again result in failure. Temporal redundancy has a great advantage for some applications it does not require redundant hardware or software. It simply requires the availability of additional time to reexecute the failed process. Temporal redundancy can then be used in applications in which time is readily available such as many human-interactive programs. Applications with hard real-time constraints .