La multiprogramación es posible gracias al uso de una unidad de gestión de memoria (MMU) , que permite al sistema operativo dividir la memoria disponible entre múltiples programas. A cada programa se le asigna su propia porción de memoria y la MMU garantiza que ningún programa pueda acceder a la memoria de otro programa.
Para que la multiprogramación funcione eficazmente, el sistema operativo también debe proporcionar un mecanismo para la programación los programas para que se ejecuten de manera justa y eficiente. El programador normalmente utiliza un sistema por turnos. algoritmo, que le da a cada programa un intervalo de tiempo de igual duración para ejecutarse. Cuando el intervalo de tiempo de un programa finaliza, se adelanta y se le da la oportunidad de ejecutarse al siguiente programa en la cola.
La multiprogramación tiene varias ventajas sobre la programación única. En primer lugar, mejora el rendimiento general del sistema, ya que se pueden ejecutar varios programas al mismo tiempo. En segundo lugar, reduce la cantidad de tiempo que un usuario tiene que esperar para que un programa comience a ejecutarse, ya que el sistema operativo puede cambiar entre programas muy rápidamente. En tercer lugar, permite ejecutar varios programas al mismo tiempo, incluso si algunos programas requieren más E/S que otros.
La principal desventaja de la multiprogramación es que puede aumentar la cantidad de gastos generales asociados con el sistema operativo, ya que el sistema operativo tiene que administrar la memoria y la programación de múltiples programas. Sin embargo, estos gastos generales suelen ser pequeños y los beneficios de la multiprogramación superan con creces los costos.
Aquí hay un ejemplo simplificado de cómo funciona la multiprogramación:
1. El sistema operativo asigna una porción de memoria a cada uno de los programas que se van a ejecutar.
2. El sistema operativo coloca el primer programa en la cola de programas listos.
3. La CPU ejecuta el primer programa durante un intervalo de tiempo de una duración especificada.
4. Cuando se acaba el intervalo de tiempo, el sistema operativo se adelanta al primer programa y lo coloca al final de la cola de programas listos.
5. Luego, el sistema operativo coloca el siguiente programa en la cola de programas listos al principio de la cola y le asigna un intervalo de tiempo de una duración especificada.
6. El proceso se repite hasta que se hayan ejecutado todos los programas.