Está en la página 1de 10

PROGRAMACIÓN ORIENTADA A OBJETOS

ING. GENOVEVA MOREIRA SANTOS MG.

ACTIVIDAD PRÁCTICA 10
UNIDAD 3: CONCURRENCIA, EXCLUSIÓN MUTUA Y SINCRONIZACIÓN

JHON MICHAEL SALAZAR VILLAVICENCIO


22 DE JULY DE 2023
8 paginas máximo

UNIDAD 3: CONCURRENCIA, EXCLUSIÓN MUTUA Y SINCRONIZACIÓN

1. Introducción
El texto aborda el tema de la concurrencia en los sistemas informáticos y su relación con el
problema del enclavamiento. La concurrencia se refiere a la capacidad de un sistema para
ejecutar numerosos procesos de forma concurrente e interactiva, lo que permite aumentar la
eficiencia y el uso de recursos. Sin embargo, esta característica también puede conducir al
entrelazamiento, un problema que se produce cuando muchos procesos comparten recursos y
quedan atrapados en un círculo vicioso de espera mutua que les impide progresar.

En el texto se analizan varias formas de hacer frente al bloqueo, como la prevención, la


detección y la predicción. La prevención consiste en diseñar el sistema para evitar las
condiciones que conducen al bloqueo, mientras que la detección implica identificar los casos
de bloqueo y aplicar procedimientos de recuperación para restablecer la funcionalidad del
sistema.

La predicción, por su parte, emplea procesos dinámicos para anticipar posibles condiciones de
estancamiento y tomar medidas preventivas.

Cada técnica tiene ventajas e inconvenientes, y la elegida vendrá determinada por las
características y requisitos específicos del sistema. Comprender estas tácticas es fundamental
para conseguir una arquitectura de sistemas concurrentes robusta y eficiente, evitar situaciones
de bloqueo y garantizar la ejecución fluida de las aplicaciones en un entorno de concurrencia.

1
2. Desarrollo
Marco teórico
Concurrencia:

es una propiedad de los sistemas en la cual los procesos de un cómputo se hacen


simultáneamente, y pueden interactuar entre ellos, es decir son procesados al mismo tiempo, de
manera que, para ejecutar uno de ellos, no hace falta que se haya ejecutado otro.

Pongamos un ejemplo: digamos que estoy reproduciendo una canción al mismo tiempo que
estoy escribiendo esta entrada, y a su vez estoy tengo un video abierto en youtube. Lo que en
realidad sucede es que mi computadora hace esto:

• Reproduce la canción durante 1 nanosegundo y se detiene

• Escribe una letra durante 1 nanosegundo y se detiene

• Reproduce una parte del video durante 1 nanosegundo y se detiene

• Repite estas instrucciones otra vez miles de veces por segundo.

Varias aplicaciones:
para este caso se invento la multiprogramación, esto para permitir que el tiempo de procesador
de la máquina fuese compartido dinámicamente entre varios trabajos o aplicaciones activas (lo
que acabamos de explicar arriba).

Aplicaciones estructuradas:
En el contexto del diseño modular y la programación estructurada, hay ciertas aplicaciones que
pueden beneficiarse al implementarse como un conjunto de procesos concurrentes. Esto implica
que existen programas que, para operar de manera efectiva, necesitan llevar a cabo múltiples
tareas simultáneamente o contar con varios hilos de ejecución en funcionamiento de forma
paralela.

2
Unknown. (2018, December 15).

El interbloqueo

es un desafío que surge cuando varios procesos concurrentes comparten recursos en un sistema.
Estos procesos solicitan el acceso a ciertos recursos y los liberan cuando ya no los requieren.
Sin embargo, puede ocurrir que un recurso esté en uso y asignado a un proceso en particular,
mientras otros procesos esperan obtener acceso a dicho recurso. Esto puede resultar en una
situación en la que los procesos se bloquean entre sí, sin que ninguno pueda avanzar, lo que se
conoce como interbloqueo.

Cerinza, N. G. (n.d.). FAEDIS.

3
¿De quién es la culpa del interbloqueo?

En ocasiones, el interbloqueo no es causado por errores en las aplicaciones en sí, sino por la
forma en que el sistema de gestión de recursos opera. Un ejemplo de esto es cuando dos
procesos, A y B, pueden entrar en un estado de interbloqueo, incluso si ambos están escritos de
manera adecuada y sin errores. En estas situaciones, el sistema de gestión de recursos no puede
manejar adecuadamente las solicitudes y liberaciones de recursos entre los procesos, lo que da
lugar a un bloqueo mutuo y ninguna de las tareas puede avanzar. En estos casos, el problema
radica en la gestión del sistema y cómo se manejan los recursos compartidos entre los procesos,
lo que puede llevar a situaciones no deseadas de interbloqueo.

(García, 2008)

Condiciones para el interbloqueo

Cuando un sistema experimenta una situación de interbloqueo, se cumplen simultáneamente

cuatro condiciones:

1. Exclusión mutua: Los recursos no pueden ser compartidos entre los procesos, lo que

significa que un recurso asignado a un proceso no puede ser utilizado por otro al mismo

tiempo.

2. Retención y espera: Un proceso que ya tiene uno o varios recursos asignados mantiene

esos recursos mientras espera la asignación de otros recursos que pertenecen a otros

procesos.

3. No expropiación: Un recurso solo puede ser liberado de manera voluntaria por el

proceso que lo tiene asignado; no puede ser forzado a liberarlo por otro proceso.
4
4. Espera circular: Existe una cadena cíclica de procesos en espera, donde cada proceso

espera un recurso que es retenido por el siguiente proceso en la cadena. La última

instancia de la cadena espera un recurso que es retenido por el primer proceso, cerrando

así el círculo.

Tratamiento del interbloqueo

Para garantizar que en un sistema nunca ocurran interbloqueos, existen diferentes enfoques:

1. Prevención: Consiste en diseñar el sistema de manera que se evite cualquier situación

que cumpla alguna de las cuatro condiciones del interbloqueo. Es decir, se toman

medidas para asegurarse de que los procesos no puedan entrar en un estado de bloqueo

mutuo.

2. Evitación: En este enfoque, el sistema intenta evitar caer en un estado de interbloqueo

a medida que se desarrolla y se ejecuta. Se utilizan algoritmos y técnicas para tomar

decisiones prudentes sobre cómo asignar y liberar recursos entre los procesos con el

objetivo de evitar la aparición de interbloqueos.

3. Detección y recuperación: Si a pesar de los esfuerzos de prevención y evitación, se

produce un interbloqueo, el sistema debe contar con mecanismos de detección para

identificar la situación y luego implementar un proceso de recuperación. Esto puede

implicar liberar recursos, terminar ciertos procesos o tomar otras acciones para deshacer

el interbloqueo y permitir que el sistema continúe funcionando correctamente.

4. No intervención: Algunos sistemas pueden optar por no abordar activamente el

problema del interbloqueo y en cambio, dejar que los usuarios intervengan si ocurre un

bloqueo. En este caso, el sistema no tiene mecanismos automáticos de prevención o


5
recuperación, y en situaciones de interbloqueo, los usuarios deben resolver

manualmente la situación.

Prevención del interbloqueo


Para garantizar que un proceso no quede bloqueado mientras retiene algún recurso, se pueden
implementar diferentes enfoques. Uno de ellos es asegurarse de que el proceso solicite todos
los recursos que necesita de una vez, antes de comenzar su ejecución. Sin embargo, esta
estrategia puede tener un efecto negativo si el proceso retiene muchos recursos sin utilizarlos,
lo que podría llevar a una ineficiente asignación de recursos en el sistema.

garantizar que un proceso no quede bloqueado mientras retiene recursos puede ser un desafío
complejo, y las soluciones pueden tener efectos negativos como la ineficiencia en el uso de
recursos o la posibilidad de inanición de un proceso. Por lo tanto, diseñar un sistema
concurrente que evite el interbloqueo y garantice una ejecución equitativa y eficiente para todos
los procesos es un área de estudio importante en la teoría de la concurrencia.

Recuperación del interbloqueo

Un sistema que tiene como objetivo recuperarse del interbloqueo necesita implementar un
algoritmo de detección que sea invocado en momentos apropiados, como periódicamente. La
detección periódica busca identificar si se ha producido un estado de interbloqueo en el sistema,
donde varios procesos están bloqueados y esperando por recursos que otros procesos retienen.

Una vez detectado el interbloqueo, el sistema tiene diferentes opciones para intentar la
recuperación y restaurar la funcionalidad normal:

Terminación de procesos: En esta estrategia, el sistema selecciona uno o varios procesos


involucrados en el interbloqueo y los termina abruptamente. Esto libera los recursos que estaban
reteniendo, permitiendo que otros procesos puedan avanzar y completar sus tareas. Sin
embargo, la terminación de procesos puede tener efectos adversos, ya que se podrían perder
datos o dejar tareas incompletas.

Expropiación de recursos: En esta opción, el sistema toma el control de los recursos asignados
a ciertos procesos involucrados en el interbloqueo y los libera para ser utilizados por otros
procesos en espera. Luego, el sistema podría asignar nuevamente los recursos liberados a los
procesos originales una vez que el interbloqueo se haya resuelto. Sin embargo, esta estrategia

6
también puede generar problemas si los procesos afectados tienen dependencias críticas en los
recursos expropiados.

Detección:
Aquí, aunque el interbloqueo puede ocurrir ocasionalmente, el sistema operativo ejecuta
periódicamente un algoritmo que identifica la presencia de interbloqueo cuando ocurre. Una
vez detectado, el sistema implementa estrategias de recuperación para resolver la situación.
Estas estrategias pueden incluir el abandono de algunos procesos, el retroceso en la asignación
de recursos, el abandono controlado o la apropiación total de los recursos en el sistema.

Cerinza, N. G. (n.d.). FAEDIS.

7
2. CONCLUSIONES
La concurrencia en sistemas permite que múltiples procesos se ejecuten simultáneamente y puedan
interactuar entre sí. Sin embargo, esto también puede dar lugar al problema del interbloqueo, donde
los procesos se bloquean entre sí debido a conflictos en el acceso a los recursos compartidos.

Para evitar el interbloqueo, existen tres estrategias: prevención, detección y predicción. La prevención
implica diseñar el sistema de manera que se eviten las condiciones que conducen al interbloqueo. La
detección se enfoca en identificar periódicamente si se ha producido un interbloqueo para luego
aplicar estrategias de recuperación, como la terminación de procesos o la expropiación de recursos.
Por otro lado, la predicción utiliza análisis dinámicos para anticipar si una solicitud de recurso podría
conducir a un interbloqueo, evitando así que ocurra.

En conclusión, el interbloqueo es un problema que puede afectar a sistemas concurrentes, pero se


puede abordar de manera efectiva mediante estrategias de prevención, detección y predicción. Estas
soluciones permiten mantener la concurrencia y la interacción entre procesos de manera segura y
eficiente en sistemas informáticos complejos.

3. BIBLIOGRAFÍA

BIBLIOGRAFÍA
García, R. (2008). sopa.dis.ulpg. Obtenido de http://sopa.dis.ulpgc.es/so/teoria/pdf/so-11-
Interbloqueo.pdf

Quesada, R. G.-A. (s.f.). Sistemas Operativos tema 1.1 interbloquea.

Unknown. (2018, December 15). Concurrencia y Secuencialidad (Sistemas Operativos).

StudentPlace. https://studentplace98.blogspot.com/2018/09/concurrencia-y-

secuencialidad-

sistemas.html#:~:text=Concurrencia%3A%20es%20una%20propiedad%20de,que%20

se%20haya%20ejecutado%20otro.

Cerinza, N. G. (n.d.). FAEDIS.

http://virtual.umng.edu.co/distancia/ecosistema/odin/odin_desktop.php?path=Li4vb3Z

hcy9pbmdlbmllcmlhX2luZm9ybWF0aWNhL3Npc3RlbWFzX29wZXJhdGl2b3Mvd

W5pZGFkXzMv#slide_6
8
9

También podría gustarte