¿Qué es la multiprogramación?

La multiprogramación es uno de los tipos más básicos de procesamiento paralelo que se puede emplear en muchos entornos diferentes. Esencialmente, hace posible que varios programas estén activos al mismo tiempo, mientras aún se ejecutan a través de un solo procesador. Su funcionalidad en este entorno implica un proceso continuo de realizar secuencialmente tareas asociadas con la función de un programa, y ​​luego pasar a ejecutar una tarea asociada con el siguiente programa.

Este tipo de procesamiento es muy diferente al multiprocesamiento porque, aunque puede haber varios programas actualmente activos, el monoprocesador no está ejecutando simultáneamente comandos para todos los programas. En cambio, el procesador se dirige a cada programa, ejecuta un solo comando y luego pasa al siguiente programa en la cola. El programa anterior permanece activo, pero entra en un estado pasivo hasta que el monoprocesador vuelve al frente de la cola y ejecuta un segundo comando.

Desde el punto de vista del usuario final, el proceso es perfecto. En cuanto a la funcionalidad real, el usuario parece estar utilizando varias aplicaciones diferentes al mismo tiempo. Esto se debe a que la multiprogramación utiliza el monoprocesador para ejecutar comandos rápidamente. El resultado final es que un usuario nota poco o ningún tiempo de retraso al minimizar una aplicación para realizar una tarea asociada con una aplicación diferente.

El mecanismo dentro de la multiprogramación se conoce como interrupción. A cada tarea se le concede una cantidad específica de tiempo para su procesamiento antes de que los sistemas operativos pasen al siguiente programa y a la siguiente tarea. En cierto sentido, este método consiste en hacer malabares con varias tareas a la vez, realizar rápidamente una parte de la acción requerida y luego pasar a hacer algo con una tarea diferente antes de volver al trabajo anterior.

La memoria es importante para que esta forma de procesamiento funcione correctamente. Debe haber suficiente capacidad para garantizar que, si un programa dentro de la cola rotatoria encuentra un problema, no prevenga retrasos ni afecte el funcionamiento de otras aplicaciones abiertas. Al mismo tiempo, debería existir algún tipo de protección de la memoria. Si este no es el caso, entonces un problema con una aplicación puede crear un efecto en cascada que apaga o al menos ralentiza las otras aplicaciones abiertas.