0% encontró este documento útil (0 votos)
91 vistas2 páginas

Deadlock en Sistemas Multiprogramación

El documento describe el problema del deadlock en sistemas de multiprogramación, donde dos o más procesos esperan recursos que nunca serán liberados, resultando en un bloqueo mutuo indefinido. Se dan ejemplos como dos transferencias bancarias en sentidos opuestos que bloquean cuentas de forma cruzada, o programas copiando archivos que esperan discos bloqueados por el otro programa. Para prevenir deadlocks, los procesos deben solicitar todos los recursos de antemano o liberar los ya obtenidos si se les niegan más recursos.

Cargado por

Rocio Mena
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
91 vistas2 páginas

Deadlock en Sistemas Multiprogramación

El documento describe el problema del deadlock en sistemas de multiprogramación, donde dos o más procesos esperan recursos que nunca serán liberados, resultando en un bloqueo mutuo indefinido. Se dan ejemplos como dos transferencias bancarias en sentidos opuestos que bloquean cuentas de forma cruzada, o programas copiando archivos que esperan discos bloqueados por el otro programa. Para prevenir deadlocks, los procesos deben solicitar todos los recursos de antemano o liberar los ya obtenidos si se les niegan más recursos.

Cargado por

Rocio Mena
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

DEADLOCK

En sistemas de multiprogramación, uno de los principales objetivos del sistema operativo


es el compartir recursos. Al compartir los recursos entre varios usuarios, cada uno de los
cuales mantiene un control exclusivo sobre ciertos recursos asignados a él, es posible que
otros usuarios no terminen sus procesos por esperar que se liberen los recursos que
requieren (bloqueo entre usuarios).

El Deadlock puede aparecer de muchas formas:

 Si a un proceso se le asigna la tarea de esperar a que ocurra un evento y el


sistema no incluye providencias para señalar la ocurrencia de dicho evento, habrá
un bloqueo mutuo con un solo proceso. Es muy difícil detectar bloqueos mutuos
de esta naturaleza.

 La mayor parte de los bloqueos mutuos en sistemas reales implican una


competencia entre varios procesos por varios recursos.

El bloqueo mutuo (deadlock) es el problema más serio que se puede presentar en un


ambiente de multiprogramación. Es la actividad en que dos o más procesos esperan un
recurso (CPU, memoria, entrada/salida) que nunca les va a ser otorgado.

Un ejemplo clásico de interbloqueo es el de una cuenta bancaria.

En la operación de transferencia bloqueas el acceso a las clases que representan


las cuentas de origen y destino para evitar inconsistencias en sus saldos, ya que si
no lo bloquearas y otro hilo retira o ingresa dinero mientras se está efectuando otra
transferencia podrías tener inconsistencias en los saldos. De esta forma te aseguras
de que la operación de transferencia es consistente. Hasta aquí todo controlado...

Pero ¿qué pasa si de repente dos hilos intentan acceder exactamente al mismo
tiempo a hacer una transferencia entre las mismas dos cuentas, pero en sentidos
contrarios?
Lo que ocurriría es que la primera transferencia bloquearía la cuentaA y la segunda
la cuentaB (es la primera línea de código). Al ir a bloquear la segunda cuenta, la
primera operación se encontraría con un bloqueo en la cuentaB creado por la otra
transferencia, y viceversa. El resultado es que ambas operaciones quedarían
bloqueadas indefinidamente porque una estaría esperando debido al bloqueo de la
otra. Aquí está el ¡deadlock!

Otro ejemplo puede ser:

Un programa A quiere copiar desde el disco 1 al disco 2 y toma el control sobre disco 1.
Un programa B quiere copiar desde el disco 2 al disco 1 y toma el control sobre disco 2.
El programa A debe esperar hasta que el programa B libere el disco 2.
El programa B debe esperar hasta que el programa A libere disco 1.
Ambos programas deberán espera para siempre.
Aquí se presenta el Deadlock!!!!

Para prevenir la condición de deadlock:

1. Cada proceso deberá pedir desde un principio todos los recursos que va a utilizar.
2. Si va a utilizar más recursos después, tiene que esperarse a que se liberen los
demás recursos.
3. Si a un proceso que tiene varios recursos se le niegan los demás, ese proceso
deberá liberar sus recursos que ya le habían sido asignados.
4. Asignar prioridad a los recursos.

Aún así es muy difícil prevenir un deadlock.

También podría gustarte