next up previous contents
Next: Justicia entre procesos Up: Propriedades de programas concurrentes Previous: Propriedades de programas concurrentes   Índice General

Seguridad y vivacidad/viveza

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 up previous contents
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