La multiprogramación permite que dos o más procesos compartan la misma unidad de memoria principal y se ejecuten de forma pseudo-paralela, aunque solo puede haber un proceso ejecutándose en la CPU en un momento dado. Esto se logra mediante el particionamiento de la memoria para almacenar los procesos y permitir que el procesador acceda a ellos sin necesidad de esperar las operaciones de entrada/salida. La multiprogramación aprovecha los tiempos en que los procesos esperan las operaciones de E/S para aumentar el uso de la CPU.