Abstract
Un sistema distribuido es un programa que ejecuta sobre un conjunto de ordenadores conectados por líneas de comunicación. Una característica importante de estos sistemas es que pueden tolerar fallos de alguno de los ordenadores y seguir cumpliendo la función que tenían encomendada, todo ello manteniendo un estado consistente. Esta tesis estudia la tolerancia a fallos hardware, usando técnicas software. En primer lugar, se presenta una clasificación original de los trabajos realizados hasta el presente. A continuación se estudia un modelo orientado a procesos que tolera fallos mediante replicación de procesos, presentando un conjunto original de protocolos basados en un consenso distribuido. Por último, se demuestra la utilidad del modelo, estudiando su aplicación a diversos ejemplos paradigmáticos en sistemas distribuidos. A distributed system is a program that executes on a set of computers connected by communication lines. An important feauture of these systems F is their ability to tolérate failures of some computers and still continué their execution in a consistent state performing the function specified. This thesis studies hardware fault tolerance in distributed systems using software techniques. First, it presents an original classification of the current state of the art. Then it introduces a process oriented model that tolerates failures by process replication, presenting an original set of protocols required for its implementation based on distributed consensus. The thesis ends showing the advantages, of the model proposed studying its application to a number of different paradigmatic examples within the field of distributed systems.