hola
Que es Interbloqueo
• El número de recursos es finito y limitado y normalmente es
considerablemente menor que el de procesos. Los recursos
pueden ser la CPU, memoria, dispositivos (impresoras,
disco,
cinta), ficheros, interrupciones, semáforos. Los
procesos compiten entre sí, por esos recursos.
• Un proceso puede solicitar como máximo el número máximo
de recursos delsistema.
Modelado de Interbloqueo
• Para ello se recurre al grafo de recursos del sistema o grafo de
asignaciones de recursos:
• Vértices:
• Círculos: procesos
• cuadrados: clases o tipos de recursos, con tantos círculos en el
interior como número de recursos haya en el sistema.
• Arcos orientados:
P à R: arista de solicitud. P está solicitando un recurso de tipo
R.
R à P: arista deasignación. Un recurso de tipo R asignado a un
proceso P.
Detectar y Finalizar
Interbloqueo
• Un interbloqueo se produce cuando dos o más tareas se
bloquean entre sí permanentemente teniendo cada tarea un
bloqueo en un recurso que las otras tareas intentan bloquear.
En el siguiente gráfico se presenta una vista de alto nivel de un
estado de interbloqueo donde:
Detectar y FinalizarInterbloqueo
• La tarea T1 tiene un bloqueo en el recurso R1 (indicado por la
flecha de R1 a T1) y ha solicitado un bloqueo en el recurso R2
(indicado por la flecha de T1 a R2).
• La tarea T2 tiene un bloqueo en el recurso R2 (indicado por la
flecha de R2 a T2) y ha solicitado un bloqueo en el recurso R1
(indicado por la flecha de T2 a R1).
• Dado que ninguna tarea puede continuar hasta queun recurso
esté disponible y ningún recurso puede liberarse hasta que
continúe una tarea, existe un estado de interbloqueo.
• El SQL Server Database Engine (Motor de base de datos de
SQL Server) detecta automáticamente los ciclos de
interbloqueo en SQL Server. El Motor de base de datos elige
una de las sesiones como sujeto del interbloqueo y la
transacción actual finaliza con un errorpara romper el
interbloqueo.
Recursos que pueden causar
interbloqueo
• Cada sesión de usuario puede tener una o más tareas en
ejecución y cada tarea puede adquirir o esperar para adquirir
una serie de recursos. Los siguientes tipos de recursos pueden
causar bloqueos que podrían dar como resultado un
interbloqueo.
Bloqueos
• Esperar para adquirir bloqueos en recursos, como objetos,páginas, filas, metadatos y aplicaciones, puede causar un
interbloqueo. Por ejemplo, la transacción T1 tiene un bloqueo
compartido (S) en la fila f1 y está esperando para obtener un
bloqueo exclusivo (X) en f2. La transacción T2 tiene un
bloqueo compartido (S) en f2 y está esperando para obtener
un bloqueo exclusivo (X) en la fila f1. Esta situación tiene como
resultado un ciclo de bloqueo enel que T1 y T2 esperan que la
otra transacción libere los recursos bloqueados.
Subprocesos de trabajo
• Una tarea en cola que espera un subproceso de trabajo
disponible puede causar un interbloqueo. Si la tarea en cola es
propietaria de recursos que están bloqueando todos los
subprocesos de trabajo, se generará un interbloqueo.
• Por ejemplo, la sesión S1 inicia una transacción y adquiereun
bloqueo compartido (S) en la fila f1 y, a continuación, se
suspende. Las sesiones activas que se ejecutan en todos los
subprocesos de trabajo disponibles intentan adquirir bloqueos
exclusivos (X) en la fila f1.
• Dado que la sesión S1 no puede adquirir un subproceso de
trabajo, no puede confirmar la transacción y liberar el bloqueo
de la fila f1. Esta situación tiene como resultado uninterbloqueo.
Memoria
• Cuando hay solicitudes simultáneas esperando concesiones de
memoria que no se pueden satisfacer con la memoria
disponible, puede producirse un interbloqueo. Por ejemplo,
dos consultas simultáneas, C1 y C2, se ejecutan como
funciones definidas por el usuario que adquieren 10 MB y 20
MB de memoria respectivamente. Si cada consulta necesita 30
MB y el total de...
Regístrate para leer el documento completo.