La concurrencia se produce cuando hay dos o más procesos ejecutándose simultáneamente. El procesamiento paralelo ocurre cuando dos o más procesadores operan al mismo tiempo. Existen dos configuraciones principales de multiprocesamiento: maestro/esclavo y simetría. La programación concurrente utiliza técnicas como productores/consumidores, semáforos y exclusión mutua de lectores/escritores para coordinar el acceso a recursos compartidos y sincronizar procesos concurrentes.