No, definitivamente concurrente es diferente de paralelo. aquí es exactamente cómo.
La concurrencia se refiere al intercambio de recursos en el mismo marco de tiempo. Como ejemplo, varios procesos pueden compartir la misma CPU o compartir memoria o un dispositivo de E/S.
Ahora, por definición, dos procesos son concurrentes si solo si el segundo comienza la ejecución antes de que el primero haya finalizado (en la misma CPU). Si los dos procesos se ejecutan en la misma CPU, digamos por ahora, de núcleo único, los procesos son concurrentes pero no paralelos: en este caso, el paralelismo es solo virtual y se refiere al tiempo compartido del sistema operativo. El sistema operativo parece estar ejecutando varios procesos simultáneamente. Si solo hay una CPU de un solo núcleo, solo se puede ejecutar una instrucción de un solo proceso en un momento determinado.Dado que la escala de tiempo humana es miles de millones de veces más lenta que la de las computadoras modernas, el sistema operativo puede cambiar rápidamente entre los procesos para dar la apariencia de varios procesos que se ejecutan al mismo tiempo.
Si en su lugar ejecuta los dos procesos en dos CPU diferentes, los procesos son paralelos: no se comparte en el mismo marco de tiempo, porque cada proceso se ejecuta en su propia CPU. El paralelismo en este caso no es virtual sino físico. Vale la pena señalar aquí que ejecutar en diferentes núcleos de la misma CPU multinúcleo aún no se puede clasificar como completamente paralelo, porque los procesos compartirán los mismos cachés de CPU e incluso competirán por ellos.
+1 Excelente pregunta. ¿Podría ser mejor existir en http://programmers.stackexchange.com/? 'Programadores: Stack Exchange es para programadores expertos que estén interesados en discusiones subjetivas sobre el desarrollo de software. –
@JohnK No creo que estas definiciones sean subjetivas. –