Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ACTIVIDAD PRÁCTICA 10
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.
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:
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:
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.
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)
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.
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
instancia de la cadena espera un recurso que es retenido por el primer proceso, cerrando
así el círculo.
Para garantizar que en un sistema nunca ocurran interbloqueos, existen diferentes enfoques:
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.
decisiones prudentes sobre cómo asignar y liberar recursos entre los procesos con el
implicar liberar recursos, terminar ciertos procesos o tomar otras acciones para deshacer
problema del interbloqueo y en cambio, dejar que los usuarios intervengan si ocurre un
manualmente la situación.
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.
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:
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.
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.
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
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.
http://virtual.umng.edu.co/distancia/ecosistema/odin/odin_desktop.php?path=Li4vb3Z
hcy9pbmdlbmllcmlhX2luZm9ybWF0aWNhL3Npc3RlbWFzX29wZXJhdGl2b3Mvd
W5pZGFkXzMv#slide_6
8
9