DEADLOCK
Los procesos no son ejecutados constantemente desde que se inician hasta que son finalizados. Un proceso puede estar identificado con tres estados diferentes: leyendo (ready), ejecutando (running) o bloqueado (blocked). En el estado de lectura, un proceso está parado, concediendo que otro proceso sea ejecutado; en el estado de ejecución, un proceso está utilizando algún recurso; y en el estado de bloqueo, el proceso está parado y no se ejecutará mientras algo lo restaure.
Una condición común no deseable es descripta como deadlock, que es cuando dos procesos están en un estado de ejecución, y requieren intercambiar recursos entre sí para continuar. Ambos procesos están esperando por la liberación del recurso requerido, que nunca será realizada; como no hay ningún resultado, tomará un camino que llevará a un estado de deadlock.
Muchos escenarios han sido construidos para ilustrar las condiciones de deadlock, siendo el más popular el Problema de Comida de los Filósofos. Cinco filósofos tienen cinco platos de fideos enfrente suyo y cinco tenedores, uno a cada lado del plato. Los filósofos necesitan ambos tenedores (derecha e izquierda) para comer. Durante la comida realizarán solo dos operaciones mutuamente excluyentes, pensar o comer. El problema es un paralelismo simplista entre procesos (los filósofos) tratando de obtener recursos (tenedores); mientras están en estado de ejecución (comiendo) o de lectura (pensando). Una condición posible de deadlock puede ocurrir, si todos los filósofos quieren coger el tenedor de la derecha y, a la vez, el de la izquierda: la comida terminará en estado de deadlock.
Es muy difícil determinar cuando un sistema esta por causar un deadlock, simplemente porque es casi imposible predecir que un proceso va a requerir un recurso, antes de que lo deje de usar otro proceso. Algunas pruebas han sido realizadas para posibles modelos y pronósticos del estado de sistemas futuros usando trayectorias de recursos. Otras pruebas han sido hechas para identificar y clasificar estados de sistemas en: Safe, Unsafe, y Deadlock. Cuando el sistema está en el estado “safe” se refiera que no ocurrió un deadlock, y que el sistema puede aún dar servicio a los procesos pendientes requeridos. Cuando el sistema está en estado “unsafe”, esto se refiere a que algunos de los procesos pendientes no ha sido servido, y la posibilidad de que se produzca un deadlock es inminente. Que este en estado “unsafe”, no garantiza que ocurra en un futuro un deadlock, ya que el sistema posiblemente nunca tenga un requerimiento de proceso ofensivo y así se transforme en un deadlock.