Concurrencia

Dos o más procesos son concurrentes cuando precisan de la atención de la misma CPU (o core) en un mismo intervalo de tiempo. Eso no quiere decir que su ejecución sea exáctamente a la vez, de hecho no lo es. Una CPU (o un core) solo puede ejecutar un proceso en un mismo momento. Los procesos se van turnando el tiempo de la CPU.

Nota: Cuando hay más de un procesador si puede haber concurrencia REAL. El SO debe estar preparado para manejar varios CPU. Se llaman sistemas multiproceso en contraposición con los que tienen una sola CPU, que son monoproceso aunque pueden ser multiprogramados si atienden procesos concurrentes. Aquí los trataremos como conceptos equivalentes.

Un sistema operativo multiproceso (multiprogramado, multitarea... cada uno le llama como quiere) es aquel que acepta procesos concurrentes.

Los procesos pueden afrontar la concurrencia de dos formas:

  • Cooperativa: Cuando se programan se debe tener en cuenta que de vez en cuando se debe devolver el control de la CPU al sistema operativo, para que imparta justicia y reparta el tiempo con otros procesos según unas reglas.

  • Preventiva (preemptive): Los procesos son egoistas. Entienden que todos los recursos del ordenador son para ellos. Debe llegar el S.O. para interrumpir el que se está ejecutando y darle acceso a otro. Lo hará según unos tiempos y unas reglas también.

Parece más seguro el segundo tipo de concurrencia. Permite programar más facilmente y lo que es más importante, los errores de un proceso pueden aislarse y que no afecten a otro proceso o al SO.

Última actualización