En los sistemas modernos, donde la eficiencia y velocidad son esenciales, las computadoras manejan múltiples tareas a la vez mediante técnicas como la concurrencia y el paralelismo. Aunque a menudo se confunden, estos conceptos tienen diferencias clave.
Conceptos y Clases
Concurrencia
La concurrencia permite que varias tareas avancen en paralelo de manera lógica, aunque no necesariamente al mismo tiempo físico. Es como tener varias conversaciones intercaladas con diferentes personas: cada una progresa por turnos.
-
Se basa en intercalado de procesos.
-
Ideal para sistemas multitarea o con recursos limitados.
-
Se usa comúnmente en sistemas operativos y aplicaciones interactivas.
Paralelismo
El paralelismo, por otro lado, implica que múltiples tareas se ejecutan simultáneamente, usando múltiples núcleos o procesadores. Es como tener varias personas resolviendo problemas distintos al mismo tiempo.
-
Aprovecha hardware multinúcleo.
-
Utilizado en procesamiento intensivo (IA, simulaciones, renderizado, etc.).
-
Mejora el rendimiento al dividir una tarea compleja en subtareas ejecutadas en paralelo.
Algoritmos Clásicos
Para gestionar correctamente la concurrencia y evitar problemas como bloqueos o condiciones de carrera, se han propuesto algoritmos clásicos que ilustran soluciones elegantes a estos desafíos:
🍝 El problema de los filósofos comensales
Cinco filósofos comparten una mesa con cinco tenedores. Cada uno necesita dos tenedores para comer. El problema plantea cómo coordinar el uso compartido de recursos limitados (tenedores) sin caer en bloqueo ni inanición.
Es una metáfora común para problemas de sincronización y acceso a recursos compartidos.
🏦 El algoritmo del banquero
Diseñado por Edsger Dijkstra, este algoritmo simula el comportamiento de un banquero prudente que concede o niega recursos a los procesos si, al hacerlo, se evita un estado de bloqueo.
Permite prevenir deadlocks asegurando que siempre haya una secuencia segura de ejecución.

.jpg)
Comentarios
Publicar un comentario