Pasar al contenido principal

Tema 4 - Fiabilidad en Programación Concurrente

Versión para impresiónSend by email

Introducción

La programación concurrente (varios procesos/hebras corriendo al mismo tiempo) puede producir fallos en tiempo de ejecución que es imposible depurar por métodos tradicionales. Esto es así porque los errores pueden ser dependientes de las velocidades relativas de cada proceso.

Además, los semáforos son mecanismos de un bajo nivel de abstracción, por lo que son propensos a fallos (véase en la práctica 7, los bloqueos que se producen en la última parte).

 

Interbloqueos

Ocurren si, al tener una exclusión mútua en el uso de recursos, un proceso puede ejecutarse pero está a la espera por otros. Este hecho puede provocarse entre varios procesos y quedar todos bloqueados.

Se deben evitar ordenando jerárquicamente los recursos, por ejemplo, pero a veces es ineficiente, o la computación es interactiva, por lo que seguirían produciéndose.

 

Bloqueos Vivos e Inanición

Para evitar interbloqueos, se suelen evitar siendo más flexible en la petición de recursos, pero esto provoca otros problemas.

  • Inanición: Un proceso nunca puede acceder a un recurso
  • Bloqueos Vivos: Ningún proceso puede acceder a ningún recurso