Please enable JavaScript.
Coggle requires JavaScript to display documents.
Mecanismos de sincronización - Coggle Diagram
Mecanismos de sincronización
Es
herramienta o constructo que se utiliza para coordinar la ejecución de múltiples hilos o procesos. Su principal objetivo
Objetivo
Es controlar el acceso concurrente a los recursos compartidos, evitando condiciones de carrera, inconsistencias y otros problemas relacionados con la concurrencia.
Candados
Caracteristicas:
*Proveen exclusión mutua, asegurando que solo un hilo puede acceder a un recurso compartido en un momento dado.
*Hay dos estados: bloqueado y desbloqueado
Funcionamiento
Un hilo debe adquirir el candado antes de acceder al recurso.
Si el candado está disponible, el hilo lo adquiere y procede; de lo contrario, espera.
Una vez terminado el uso del recurso, el hilo libera el candado.
Implementaciòn
Son provistos por bibliotecas estándar, como std::mutex en C++ o Lock en Java (java.util.concurrent.locks.Lock).
Transacciones
Funcionamiento
Las operaciones dentro de una transacción son tratadas como una única unidad.
Si todas las operaciones tienen éxito, la transacción se confirma (commit)
Si alguna operación falla, la transacción se revierte (rollback).
Implementación
Las bases de datos usan logs para gestionar transacciones. En memoria transaccional, se utilizan estructuras para registrar las operaciones y asegurar la consistencia.
Caracteristicas
Garantizan atomicidad, consistencia, aislamiento y durabilidad (ACID) en operaciones concurrentes.
Utilizadas principalmente en bases de datos, pero también en memoria transaccional.
Semaforos
Funcionamiento
Un hilo decrementa el semáforo antes de acceder al recurso (wait).
Si el semáforo es mayor que cero, el hilo procede; de lo contrario, espera.
Al liberar el recurso, el hilo incrementa el semáforo (signal).
Implementacón
En C/C++ se usa semaphore.h, y en Java se usa java.util.concurrent.Semaphore.
Caracteristicas
Son contadores que controlan el acceso a recursos limitados.
Pueden ser binarios (0 o 1) o contadores (permitiendo un número específico de accesos concurrentes).
Monitores
Funcionamiento
Los hilos entran en el monitor adquiriendo el mutex.
Pueden esperar en variables de condición hasta que una condición específica sea verdadera.
Una vez que la condición se cumple, el hilo puede proceder.
implementación
En Java, los monitores son implementados con synchronized y java.util.concurrent.locks.Condition.
Caracteristicas
Combinan mutexes y variables de condición.
Facilitan la exclusión mutua y la espera de condiciones específicas.
Modelos de comunicación
Funcionamiento
En el paso de mensajes, los procesos/hilos se comunican enviando y recibiendo mensajes.
En la memoria compartida, los procesos/hilos leen y escriben en una área común de memoria.
Implementación
MPI (Message Passing Interface) es común para paso de mensajes.
Pthreads y OpenMP son usados para memoria compartida.
Caracteristicas
Incluyen paso de mensajes y memoria compartida.
Facilitan la comunicación y sincronización entre hilos o procesos