¿Cuál es la diferencia entre multiprogramación, multitarea, multiprocesamiento y ejecución múltiple?

Multiprogramación

  • El concepto de multiprogramación es que más de un programa que debe ejecutar el procesador se carga en la memoria.
  • Digamos que tenemos 2 programas cargados en la memoria. El primer programa que se carga se está ejecutando. En un momento dado, requiere la entrada del usuario o esperar algunos datos
  • Durante el tiempo de espera, la CPU está inactiva. En lugar de perder el tiempo, la CPU comenzará a ejecutar el segundo programa.
  • Mientras tanto, el primer programa, una vez que recibe los datos requeridos, nuevamente obtendrá el tiempo de CPU y se ejecutará bloqueando o pausando la ejecución del segundo programa. Después de completar el primer programa, el segundo programa se ejecuta desde donde se detuvo.
  • El concepto se introdujo para maximizar el uso de la CPU.

Multitarea

  • Tanto la memoria como el tiempo de CPU se comparten entre las tareas
  • Realiza múltiples tareas al mismo tiempo. Da la ilusión de que todos los procesos o tareas se realizan simultáneamente.
  • Por ejemplo, en su escritorio podemos escuchar música, descargar cosas simultáneamente.
  • El concepto es que el tiempo de CPU se comparte equitativamente entre los procesos o tareas.
  • Nuevamente tome un ejemplo de que 3 tareas se cargan en la memoria principal. Considere que el tiempo asignado para cada programa es de 3 microsegundos. Ahora se ejecuta la primera tarea. Después de 3 microsegundos, independientemente de si la tarea se completa o no, se cambia a la segunda tarea. Del mismo modo, después de 3 segundos pasa a la tercera tarea. Por lo tanto, el tiempo de CPU se comparte por igual entre las tareas

Multiprocesamiento

  • El término multiprocesamiento se introduce en los tiempos modernos cuando comenzaron a usar más de un procesador en una sola computadora. (Recuerde los términos como procesador de doble núcleo, cuatro núcleos, octa núcleo)
  • Estos procesadores comparten dos cosas en común: 1. Memoria 2. Periféricos.
  • Al compartir la memoria y los periféricos, pueden ejecutar diferentes tareas simultáneamente.
  • Multiprogramación: tiene lugar en un sistema donde tiene un único procesador.
  • Multitarea: procesador único o, a veces, multiprocesador
  • Multiprocesamiento: multiprocesador.
  • Cada tarea es realizada por un procesador separado en caso de multiprocesamiento.
  • Esto es donde se lleva a cabo la ejecución concurrente real o la ejecución paralela.

Según la especificidad de esta pregunta, voy a suponer que el contexto está dentro de los sistemas operativos. Si bien los cuatro conceptos son bastante similares, existen algunas diferencias distintas:

Programación múltiple:

Dos o más programas se cargan en la memoria, pero cada programa debe ejecutarse individualmente. Puede pensar en esto como un único procesador que necesita ejecutar múltiples programas en su computadora. En la programación múltiple, el objetivo es ejecutar el procesador de la manera más eficiente posible, por lo que si un programa se está ejecutando pero de repente necesita esperar una entrada externa, el procesador cambiará a ejecutar un programa diferente en la memoria para que no atrapado esperando que ese primer programa termine. Teóricamente puede hacer esto con tantos programas para los que la computadora tiene memoria.

Multitarea:

Hay dos formas de ver esto: una desde el lado del usuario y otra desde el lado de la computadora. Para el usuario, la multitarea es simplemente tener múltiples ‘tareas’ ejecutándose a la vez (lo que parece) al mismo tiempo. Esto se puede lograr a través de la programación múltiple, donde un solo procesador cambia entre tareas, o la programación paralela verdadera, donde varios procesadores ejecutan múltiples programas al mismo tiempo. Si tengo Google Chrome e Internet Explorer visibles en mi computadora al mismo tiempo, estoy aprovechando la multitarea. No importa si tengo un solo procesador cambiando entre qué programa se está ejecutando realmente (multiprogramación) o si tengo dos procesadores ejecutando cada navegador web al mismo tiempo (programación paralela).

Para la computadora, la multitarea permite que varias tareas se ejecuten simultáneamente para uno o más usuarios. Esto es especialmente útil en sistemas de tiempo compartido donde muchas personas intentan ejecutar diferentes tareas al mismo tiempo en el mismo procesador. En lugar de ejecutar cada tarea secuencialmente, la computadora permitirá que cada tarea se ejecute una cierta cantidad de tiempo para que la carga se comparta entre todos los usuarios. La multitarea también abarca el cambio de contexto . Aquí es donde el sistema operativo programa porciones de varias tareas diferentes en segmentos de tiempo para que se ejecuten. Cuando aparece el segmento de tiempo de una tarea, se ejecuta en el procesador durante el tiempo asignado, luego, cuando se agota el tiempo, se vuelve a colocar en memoria para que la próxima tarea pueda ejecutarse.

Multiprocesamiento

En pocas palabras, este es el uso que hace una computadora de dos o más procesadores al mismo tiempo. Como puede adivinar, una computadora con un solo procesador no puede realizar un verdadero multiprocesamiento. Una CPU con múltiples núcleos a veces se denomina multiprocesador, pero esto es incorrecto. Una CPU contiene diferentes regiones que hacen cosas diferentes. El término “procesador multinúcleo” solo significa que una o más de estas regiones se han duplicado dentro de esa CPU en particular, a menudo para hacerla más efectiva en ciertos tipos de procesamiento. Para que una computadora realice multiprocesamiento, debe tener al menos dos CPU distintas con cualquier número de núcleos en cada una de ellas. Este término se destaca de los demás porque solo se refiere al hardware de la computadora y la capacidad de la computadora para aprovecharlo. Si piensa en un multiprocesador como un dispositivo físico, será fácil recordar el multiprocesamiento.

Subprocesamiento múltiple (ejecución múltiple):

Este término es probablemente el más fuertemente basado en la informática y se extiende profundamente en diferentes temas. Te daré una breve descripción para que entiendas la idea, pero no dudes en investigar más o pedir una aclaración si esto no es lo suficientemente profundo. Primero, alguna información de fondo:

Un proceso es una instancia completa de un programa que se ejecuta en un procesador. Un proceso tiene su propia memoria separada de otros procesos que se ejecutan. A menudo se puede dividir en subprocesos, que son partes del programa que se pueden ejecutar de forma independiente. Un hilo ya no se puede descomponer sin perder la integridad de las instrucciones que representa. A veces, un proceso solo se puede ejecutar como un subproceso, pero generalmente se puede dividir en partes para que el sistema operativo lo programe.

Ahora, en la definición. En informática, el subprocesamiento múltiple es la ejecución de cada subproceso individual en el procesador o procesadores de la manera más eficiente. Es más un modelo que una técnica, ya que el sistema operativo debe estar diseñado para manejar esto. Podría decirse que la mayor ventaja de los subprocesos múltiples es que permite que varios procesadores / núcleos dividan la carga de trabajo de un solo proceso para acelerar el funcionamiento de ese proceso.