Bloqueo mutuo

Bloqueo mutuo • • • • • • • En un medio ambiente de multiprogramación, varios procesos pueden competir por un número fi

Views 136 Downloads 2 File size 96KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Bloqueo mutuo • • • • • • •

En un medio ambiente de multiprogramación, varios procesos pueden competir por un número finito de recursos. Los recursos de un sistema son particionados en varios tipos (espacio de memoria, ciclos de CPU, archivos, dispositivos de E/S), cada uno de los cuales consiste de un número de instancias idénticas. Si un proceso requiere una instancia de un tipo de recurso, la asignación de cualquier instancia del tipo satisface el requerimiento. Cuando un proceso requiere un recurso que no está disponible pasa a un estado de espera. Un proceso puede esperar por un recurso y nunca cambiar de estado porque el recurso solicitado está retenido por otro proceso en espera. Esta situación es llamada bloqueo mutuo. Gráficamente, los bloqueos mutuos pueden describirse a través de un grafo de asignación de recursos. Existen distintas situaciones de bloqueo:  Un proceso Pi requiere una instancia de un recurso tipo R1 retenida por otro proceso Pj que se encuentra en espera y bloqueado.  Pi y Pj retienen una instancia de un recurso tipo R1 y R2 respectivamente. Pi requiere de una instancia de R2 y Pj de un recurso de tipo R1.  En un grupo de procesos, cada uno está esperando un evento que puede ser causado sólo por otro proceso del grupo.

Cuatro condiciones son necesarias para el bloqueo mutuo • Exclusión mutua • Retención y espera • No apropiación (no-preemptive) • Espera circular Estas condiciones deben darse simultáneamente. Métodos para el manejo de bloqueos mutuos Hay tres métodos para tratar el problema del bloqueo • • • • •

Usar un protocolo para asegurar que el sistema nunca entrará en un estado de bloqueo.  Prevenir del bloqueo Asegura que al menos una de las condiciones para el bloqueo no se cumplirá. Establece restricciones sobre como pueden solicitarse los recursos.  Evitar el bloqueo El S.O. necesita conocer con anticipación que recursos requerirá un proceso durante su tiempo de vida. Con esa información, el S.O. puede decidir para cada requerimiento si el proceso debe esperar o no.

• •



La decisión se realiza en función de los recursos actualmente disponibles, los asignados, y los requerimientos y liberaciones futuras de cada proceso. Permitir entrar a un estado de bloqueo y luego recuperarse.  Un algoritmo examina el estado del sistema para determinar si ha ocurrido un bloqueo.  Otro algoritmo maneja la recuperación desde el bloqueo. Ignorar el problema.  Ante un bloqueo el sistema sufrirá un deterioro en su perfomance  Eventualmente el sistema se detendrá y necesitará reinicio manual.  Es usado en algunos sistemas operativos.

Prevención del bloqueo Asegurar que al menos una de las condiciones para bloqueo no se cumpla. • Exclusión mutua  Los recursos compartibles no estarán involucrados en un bloqueo dado que no requieren acceso exclusivo.  En general no es posible prevenir los bloqueos relegando la condición de exclusión mutua, dado que hay recursos que son intrínsecamente no compartibles.  Retención y espera  Garantizar que, siempre que un proceso requiere un recurso, no tiene otro retenido.  Pueden usarse dos protocolos:  Cada proceso debe requerir y recibir todos sus recursos antes de comenzar su ejecución.  Cada proceso puede requerir algunos recursos y usarlos, pero cuando requiere otro recurso adicional, ANTES debe liberar los ya asignados.  Estos protocolos producen baja utilización de los recursos.  Puede ocasionar inanición de algunos procesos. No apropiación Alternativa 1:  Si un proceso que está reteniendo algunos recursos, requiere otro recurso que no se le puede asignar inmediatamente, entonces todos los recursos que tiene retenidos le son apropiados.  Los recursos apropiados son agregados a la lista de recursos que el proceso está esperando.  El proceso se reinicia sólo cuando recupera sus viejos recursos junto con los nuevos que esta requiriendo. Alternativa 2:  Si un proceso requiere recursos, primero chequear si están disponibles.  Si están, entonces asignarlos.  Si no están, chequear si están asignados a algún otro proceso que esté esperando recursos adicionales.

 Si es así, apropiar los recursos deseados al proceso que está esperando y asignárselos al proceso que los requiere.  Si los recursos requeridos no están disponibles ni retenidos por otro proceso en espera, entonces el proceso debe esperar.  Espera circular  Imponer un orden a todos los tipos de recursos del sistema  Cada proceso debe requerir recursos en un orden creciente de enumeración.  Implementación:  Asignar a cada tipo de recurso un número entero único  Formalmente se define una función F: R → N con R={R1,R2,...,Rm}  La función F debe ser definida de acuerdo al orden de utilización normal de los recursos en el sistema. Protocolo: Alternativa 1:  Un proceso puede inicialmente requerir cualquier número de instancias de un tipo de recurso Ri  Después el proceso puede requerir instancias de un recurso Rj si y solo si F(Rj) > F(Ri)  Si son necesarias varias instancias de un mismo tipo de recurso, debe emitirse un único requerimiento para todas ellas. Alternativa 2:  Cuando un proceso requiere una instancia de un recurso tipo Rj, debe haber liberado todos los recursos de tipo Ri tal que F(Ri) ≥ F(Rj) Evitando el bloqueo • Se requiere información adicional acerca de cómo van a ser solicitados los recursos. • Con el conocimiento de la secuencia completa de requerimientos y liberaciones para cada proceso, el sistema, ante cada requerimiento, considera:  Los recursos actualmente disponibles  Los recursos actualmente asignados a cada proceso  Los requerimientos y liberaciones futuras de cada proceso y decide si el requerimiento puede ser satisfecho, o el proceso debe esperar para evitar un posible bloqueo en el futuro. • Los algoritmos para evitar el bloqueo difieren en la cantidad y tipo de información que requieren. • • •

El modelo más simple y útil requiere que cada proceso declare el máximo número de recursos de cada tipo que puede necesitar. Con esta información el algoritmo asegura que el sistema nunca entrará en un estado de bloqueo. Un algoritmo para evitar el bloqueo examina dinámicamente el estado de asignación de recursos para asegurar de que nunca puede hacer una condición de espera circular.



El estado de asignación de los recursos está definido por el número de recursos disponibles y asignados, y las máximas demandas de los procesos. Estado seguro • Un sistema está en un estado seguro sólo si existe una secuencia segura. • Una secuencia de procesos es segura si por cada Pi, los recursos que Pi puede aún requerir, pueden ser satisfechos por los recursos actuales disponibles más los recursos retenidos por todos los Pj con j