Mostrando entradas con la etiqueta Bloqueo Mutuo. Mostrar todas las entradas
Mostrando entradas con la etiqueta Bloqueo Mutuo. Mostrar todas las entradas

Llamado: (Algoritmo de Dijkstra)

Este algoritmo se usa para evitar interbloqueos en el sistema, básicamente procede de la siguiente manera: cada proceso declara el máximo de recursos a utilizar y cada vez que se hace una solicitud de asignación de recursos, se determina si al asignar los recursos se deja en un estado inseguro y de ser así se pospone la asignación, de lo contrario, se asignan los recursos solicitados.

Asignación

Se determina si hay disponiboles
Se valida que no exceda su máximo declarado
Se verifica que si se concede la petición, el sistema quede en estado seguro
Si no se cumple cualquiera de estas condiciones, el proceso queda suspendido hasta que exista una liberación de recursos.

Desventajas

Se necesita saber desde un principio el máximo de recursos que usará cada proceso
Este proceso implica un retardo en cada asignación de recursos, lo que puede degradar el sistema si se manejan muchos recursos y/o procesos
Se requiere una garantía de devolución: c/proceso liberará los recursos asignados


proceso\recursoR1 (7)R2(7)R3(7)
MaximosP1531
P2323
P3231
P4503
AsignadosP1331
P2222
P3011
P4001
NecesariosP1200
P2101
P3220
P4502
Disponibles212
Round-robin es un método para seleccionar todos los elementos en un grupo de manera equitativa y en un orden racional, normalmente comenzando por el primer elemento de la lista hasta llegar al último y empezando de nuevo desde el primer elemento. El nombre del algoritmo viene del principio de Round-Robin conocido de otros campos, donde cada persona toma una parte de un algo compartido en cantidades parejas.

Una forma sencilla de entender el Round-robin es imaginar una secuencia para "tomar turnos". En operaciones computacionales, un método para ejecutar diferentes procesos de manera concurrente, para la utilización equitativa de los recursos del equipo, es limitando cada proceso a un pequeño período (quantum), y luego suspendiendo este proceso para dar oportunidad a otro proceso y así sucesivamente. A esto se le denomina comúnmente como Planificación Round-Robin.

Aplicación circular

Round-robin es un algoritmo de planificación de procesos simple de implementar, dentro de un sistema operativo se asigna a cada proceso una porción de tiempo equitativa y ordenada, tratando a todos los procesos con la misma prioridad. En Sistemas operativos, la planificación Round-robin da un tiempo máximo de uso de CPU a cada proceso, pasado el cual es desalojado y retornado al estado de listo, la lista de procesos se planifica por FIFO, del inglés "First In, First Out" (primero en entrar, primero en salir o primero llegado, primero atendido).

Pasos de ciclos

Para averiguar los pasos de ciclos de procesos totales se toman todos los números de procesos y se calculan con los procesos necesarios para la realización de estos...

Suponga que hay tres procesos y se desea averiguar cuanto tarda.

proceso A: 3 veces
proceso B: 4 veces
proceso C: 5 veces
siguiendo tp = tProceso + [(tProceso ultimo - tProceso) - (tProceso ultimo - tProceso proximo)] + tProceso \!

Planificación circular

Este algoritmo de planificación, conocido por Round robin, está diseñado especialmente para sistemas de tiempo compartido. Se define un intervalo de tiempo denominado "Quantum", cuya duración varía según el sistema. La cola de procesos se estructura como una cola circular. El planificador la recorre asignando un cuanto de tiempo a cada proceso. La organización de la cola es FIFO. El Quantum se suele implantar mediante un temporizador que genera una interrupción cuando se agota el Quantum de tiempo. Si el proceso agota su ráfaga de CPU antes de finalizar el Quantum, el planificador asigna la CPU inmediatamente a otro proceso. Este algoritmo tiene un tiempo de espera relativamente grande. Sin embargo, garantiza un reparto de la CPU entre todos los usuarios y arroja tiempos de respuesta buenos. Como ejemplo, supongamos los siguientes tres procesos en un instante en el sistema: Proceso Duración de la ráfaga tw P1 24 6 P2 3 4 P3 3 7

¯tw = 5,66: Tiempos de proceso y de espera según la planificación RR.
Vemos que el tiempo de espera podría ser inferior, por ejemplo 3 unidades para el algoritmo SJF. Si tenemos n procesos, y un Quantum de tiempo de q, el resultado es que cada trabajo recibe 1/n de tiempo de CPU en Quantum's de q unidades. Ningún proceso debe esperar más de (n − 1)q unidades de tiempo antes de recibir servicio. El rendimiento del algoritmo depende mucho del tamaño del Quantum. Si se utiliza un valor muy grande el algoritmo tiende a degenerar hacia el FCFS. Si el tamaño del Quantum es muy pequeño, el costo de los constantes cambios de contexto degrada mucho el rendimiento del procesador. Hay que tener en cuenta que el porcentaje relativo de cambio de contexto respecto al cuanto, es el porcentaje relativo de pérdida de la CPU. Una regla empírica dice que el cuanto de tiempo debe ser inferior al 80 % de las ráfagas de CPU.
Según Coffman, para que se pueda producir un interbloqueo se tienen que dar las siguientes cuatro condiciones:

  • Exclusión mutua: cada recurso está asignado a un único proceso de manera exclusiva.
  • Retención y espera: los procesos que tienen, en un momento dado, recursos asignados con anterioridad, pueden solicitar nuevos recursos y esperar a que se le asignen sin liberar antes alguno de los recursos que ya tenía asignados.
  • No apropiación: los recursos otorgados con anterioridad no pueden ser forzados a dejar un proceso. El proceso que los posee debe liberarlos en forma explícita. Ni siquiera el sistema operativo puede expropiárselo.
  • Espera circular: debe existir una cadena circular de dos o más procesos, cada uno de los cuales espera un recurso poseído por el siguiente miembro de la cadena. Esta condición es una consecuencia potencial de las tres primeras, es decir, dado que se producen las tres primeras condiciones, puede ocurrir una secuencia de eventos que desemboque en un círculo vicioso de espera irresoluble.

Las tres primeras condiciones son necesarias, pero no suficientes para que exista interbloqueo. Sólo las cuatro condiciones en conjunto constituyen una condición necesaria y suficiente para el interbloqueo.

Estrategias


Existen diversas estrategias frente a los interbloqueos, que se pueden agrupar en:


  • Omisión
  • Detección y recuperación
  • Prevención
  • Predicción



En sistemas operativos, el bloqueo mutuo (también conocido como interbloqueo, traba mortal, deadlock, abrazo mortal) es el bloqueo permanente de un conjunto de procesos o hilos de ejecución en un sistema concurrente que compiten por recursos del sistema o bien se comunican entre ellos. A diferencia de otros problemas de concurrencia de procesos, no existe una solución general para los interbloqueos.

Todos los interbloqueos surgen de necesidades que no pueden ser satisfechas, por parte de dos o más procesos. En la vida real, un ejemplo puede ser el de dos niños que intentan jugar al arco y flecha, uno toma el arco, el otro la flecha. Ninguno puede jugar hasta que alguno libere lo que tomó.

En el siguiente ejemplo, dos procesos compiten por dos recursos que necesitan para funcionar, que sólo pueden ser utilizados por un proceso a la vez. El primer proceso obtiene el permiso de utilizar uno de los recursos (adquiere el lock sobre ese recurso). El segundo proceso toma el lock del otro recurso, y luego intenta utilizar el recurso ya utilizado por el primer proceso, por lo tanto queda en espera. Cuando el primer proceso a su vez intenta utilizar el otro recurso, se produce un interbloqueo, donde los dos procesos esperan la liberación del recurso que utiliza el otro proceso.