La multiprogramación es una técnica de sistemas operativos que permite ejecutar múltiples programas simultáneamente en una única CPU al optimizar la utilización del procesador mientras se manejan operaciones de entrada/salida. Esto se logra a través de un mecanismo de cambio de contexto que garantiza que el CPU no esté ocioso, permitiendo que varios procesos compartan la memoria. La gestión de memoria en sistemas multiprogramados se complica debido a la necesidad de asignar áreas de memoria a diferentes procesos y garantizar su protección, especialmente en entornos multiusuario.