Next: Justicia entre procesos
Up: Propriedades de programas concurrentes
Previous: Propriedades de programas concurrentes
  Índice General
Un programa concurrente puede fallar por varias razones, las cuales
se pueden clasificar entre dos grupos de propiedades:
- seguridad:
- Esa propriedad inidca que no está pasando nada malo en el
programa, es decir, el programa no ejecuta instrucciones que no
deba hacer (``safety property'').
- vivacidad:
- Esa propriedad indica que está pasando continuamente algo bueno durante la
ejecución,
es decir, el programa consigue algún progreso en sus tareas
o en algún momento en el futuro se cumple una cierta condición
(``liveness property'').
Las propiedades de seguridad suelen ser algunas de las invariantes
del programa que se tienen que introducir en las comprobaciones
del funcionamiento correcto (por ejemplo, mediante inducción).
Ejemplos de propiedades de seguridad:
- Corrección:
-
- el algoritmo usado es correcto
- Exclusión mutua:
- el acceso con exclusión mutua a regiones críticas está
garantizado
- Sincronización:
- los procesos cumplen con las condiciones de sincronización
impuestos por el algoritmo
- Interbloqueo:
- no se produce una situación en la cual todos los procesos
participantes quedan atrapados en una espera a una condición
que nunco se cumpla.
Ejemplos de propiedades de vivacidad:
- Inanición:
- un proceso puede ``morirse'' por inanición (``starvation''), es decir,
un proceso o varios procesos siguen con su trabajo pero otros
nunca llegan a utilizar los recursos por ser excluidos de la
competición por los recursos
(por ejemplo en Java el uso de
suspend() y resume() no está recomendado)
- Bloqueo activo:
- puede ocurrir el caso que varios procesos están continuamente
competiendo por un recurso de forma activa, pero ningúno de ellos
lo consigue (``livelock'')
- Cancelación:
- un proceso puede ser terminado desde fuera sin motivo correcto,
dicho hecho puede resultar en un bloqueo porque no se ha considerado
la necesidad que el proceso debe realizar tareas necesarias para
liberar recursos
(por ejemplo, en Java el uso del stop() no está recomendado)
- Espera activa:
- un proceso está comprobando continuamente una condición malgastando
de esta manera tiempo de ejecución del procesador
Next: Justicia entre procesos
Up: Propriedades de programas concurrentes
Previous: Propriedades de programas concurrentes
  Índice General
© 2005, Dr. Arno Formella, Universidad de Vigo, Departamento de Informática