La programación por turnos es un algoritmo que se utiliza para ayudar en la creación de programas de procesos o trabajos para garantizar que cada proceso necesario para completar un trabajo tenga una gran cantidad de tiempo de ejecución. Las CPU de las computadoras pueden usar la división de tiempo para proporcionar una cantidad determinada de tiempo para que cada proceso lo use por ciclo.
El uso de la programación por turnos asigna una porción de tiempo a cada proceso que se está ejecutando. En una computadora, por ejemplo, el usuario inicia tres aplicaciones, correo electrónico, un navegador web y un procesador de texto. Estas aplicaciones se cargan en la memoria del sistema como procesos y cada una puede ejecutarse sin que el usuario considere qué aplicaciones se están ejecutando en segundo plano.
La programación por turnos maneja el intercambio de recursos entre los tres procesos de la aplicación (y los innumerables otros que se ejecutan en segundo plano y son completamente invisibles para el usuario). Esta programación funciona bien porque cada aplicación obtiene una cierta cantidad de tiempo por ciclo de procesador. Un ciclo de procesador es la cantidad de tiempo que le toma a la CPU administrar cada proceso en ejecución, una vez.
Las aplicaciones en ejecución en el ejemplo anterior proporcionan un ciclo corto para el procesador y se asignaría más tiempo a cada uno de estos tres procesos, haciendo que parezca que funcionan mejor para el usuario final. Sin la programación por turnos, la aplicación cargada primero en la memoria probablemente monopolizaría el procesador hasta que terminara de realizar cualquiera de las tareas que se le habían asignado. Cuando esa aplicación se cerró, la siguiente aplicación podría iniciarse y procesarse sin interrupción. Esto obstaculizaría los entornos de ventanas múltiples de los que los usuarios de computadoras han llegado a depender. El uso de la programación por turnos ayuda a la computadora a mantenerse al día con el usuario final y administrar eficazmente los tres procesos de aplicación.
La programación por turnos mantiene todos los trabajos o procesos en ejecución avanzando un poco a la vez, durante cada ciclo del procesador, para ayudar a que todos se ejecuten juntos y mejorar la experiencia de usabilidad para la persona que trabaja con el sistema. Luego, la CPU sondeará cada tarea que se esté ejecutando durante un ciclo para ayudar a determinar si el proceso ha finalizado.
Supongamos que el usuario decide que ha completado su trabajo en la aplicación del procesador de textos y la cierra. Esto deja en ejecución únicamente las aplicaciones de correo electrónico y navegador web. La CPU no tendría forma de realizar un seguimiento de este hecho sin una programación por turnos para sondear las aplicaciones y descubrir que el procesador de texto se ha cerrado y ya no necesita tiempo de procesador.