La concurrencia es una característica de los sistemas distribuidos
que permite que los recursos disponibles en la red puedan ser
utilizados simultáneamente por los usuarios y/o agentes que
interactúan en la esta.
Recurso
Componente hardware o
software que puede ser
compartido.
discos,
impresoras,
ficheros, bases
de datos, etc.
La idea de un sistema distribuido es poder
proporcionar a sus usuarios un servicio
simultáneo a un mismo recurso, por lo que
usual que varios usuarios intenten usar el
mismo recurso al mismo tiempo, es decir,
compiten por el uso de dicho recurso.
Casos en los que se da
concurrencia
Proceso (padre) puede crear procesos
subalternos (hijos) y dichos hijos pueden
intentar acceder simultáneamente a un
recurso.
Proceso puede crear hilos de ejecución
(funciones ejecutándose simultáneamente)
Control de concurrencia
Trata con los problemas de aislamiento y
consistencia del procesamiento de transacciones.
El control de concurrencia de un sistema
distribuido asegura que la consistencia de los
datos que se almacenan y que se procesan en el
sistema se mantengan en un ambiente
distribuido multiusuario.
Mecanismos para solucionar el
problema de acceso simultáneo a un
mismo recurso compartido.
Semáforos
Variable especial (o tipo abstracto de datos) que
constituye el método clásico para restringir o
permitir el acceso a recursos compartidos (por
ejemplo, un recurso de almacenamiento del
sistema o variables del código fuente) en un
entorno de multiprocesamiento (en el que se
ejecutarán varios procesos concurrentemente).
Paso de mensaje
Paradigma de programación ampliamente usado en el
software moderno. Es uno de los conceptos clave en
modelos de programación concurrente, programación
distribuida y programación orientada a objetos. Tipos:
paso de mensaje síncrono y paso de mensaje
asíncrono.