# Planificación Round-robin

Round-robin es un método para seleccionar todos los abstractos en un grupo de manera equitativa y en un orden racional, normalmente comenzando por el primer elemento de la lista hasta llegar al último y empezando de nuevo desde el primer elemento. El nombre del algoritmo viene del principio de Round-Robin conocido de otros campos, donde cada persona toma una parte de un algo compartido en cantidades, es decir, "toma turnos". En operaciones computacionales, un método para ejecutar diferentes procesos de manera concurrente, para la utilización equitativa de los recursos del equipo, es limitando cada proceso a un pequeño período (quantum), y luego suspendiendo este proceso para dar oportunidad a otro proceso y así sucesivamente. A esto se le denomina comúnmente como Planificación Round-Robin.

## Aplicación circular

Round-Robin es un algoritmo de planificación de procesos simple de implementar, dentro de un sistema operativo se asigna a cada proceso una porción de tiempo equitativa y ordenada, tratando a todos los procesos con la misma prioridad. En Sistemas operativos, la planificación Round-robin da un tiempo máximo de uso de CPU a cada proceso, pasado el cual es desalojado y retornado al estado de listo, la lista de procesos se planifica por FIFO, del inglés "First In, First Out" (primero en entrar, primero en salir o primero llegado, primero atendido).

### Pasos de ciclos

Para averiguar los pasos de ciclos de procesos totales se toman todos los números de procesos y se calculan con los procesos necesarios para la realización de estos...
Suponga que hay tres procesos y se desea averiguar cuánto tarda.
    proceso A: 3 veces.
    proceso B: 4 veces.
    proceso C: 5 veces.
siguiendo $tp=tProceso+[(tProcesoultimo-tProceso)-(tProcesoultimo-tProcesoproximo)]+tProceso\!$

## Planiﬁcación circular

Este algoritmo de planiﬁcación, conocido por Round robin, está diseñado especialmente para sistemas de tiempo compartido. Se define un intervalo de tiempo denominado "Quantum", cuya duración varía según el sistema. La cola de procesos se estructura como una cola circular. El planiﬁcador la recorre asignando un cuanto de tiempo a cada proceso. La organización de la cola es FIFO. El Quantum se suele implantar mediante un temporizador que genera una interrupción cuando se agota el Quantum de tiempo. Si el proceso agota su ráfaga de CPU antes de ﬁnalizar el Quantum, el planiﬁcador asigna la CPU inmediatamente a otro proceso. Este algoritmo tiene un tiempo de espera relativamente grande. Sin embargo, garantiza un reparto de la CPU entre todos los usuarios y arroja tiempos de respuesta buenos. Como ejemplo, supongamos los siguientes tres procesos en un instante en el sistema:
| Proceso | Duración de la ráfaga | tw |
| P1 | 24 | 6 |
| P2 | 3 | 4 |
| P3 | 3 | 7 |
Vemos que el tiempo de espera podría ser inferior, por ejemplo 3 unidades para el algoritmo SJF. Si tenemos n procesos, y un Quantum de tiempo de q, el resultado es que cada trabajo recibe 1/n de tiempo de CPU en Quantum's de q unidades. Ningún proceso debe esperar más de (n − 1)q unidades de tiempo antes de recibir servicio. El rendimiento del algoritmo depende mucho del tamaño del Quantum. Si se utiliza un valor muy grande el algoritmo tiende a degenerar hacia el FCFS. Si el tamaño del Quantum es muy pequeño, el costo de los constantes cambios de contexto degrada mucho el rendimiento del procesador. Hay que tener en cuenta que el porcentaje relativo de cambio de contexto respecto al cuanto, es el porcentaje relativo de pérdida de la CPU. Una regla empírica dice que el cuanto de tiempo debe ser inferior al 80 % de las ráfagas de CPU.

## Aplicación en redes

La planificación Round Robin puede ser aplicada también a otros problemas de planificación, como la planificación de redes. En las redes inalámbricas, donde varios servidores comparten un mismo canal, este algoritmo provee a cada servidor un intervalo regular de tiempo para transmitir o recibir información mediante el canal compartido. Esto hace parecer a Round Robin como un algoritmo justo, pero, de todos modos, por ser mucho menos eficiente que el "algoritmo de proporcionalidad justa", es muy difícil proveer un buen servicio a los suscriptores. El operador de la red también sufrirá capacidad reducida en la red. La causa principal es que este algoritmo no tiene en cuenta el cambio de condiciones de recepción en los diferentes receptores, por lo que planeará transmisiones desde/hacia los suscriptores de la mitad de tiempo cuando sus condiciones de recepción sean peores que las habituales. En contraste, el planeamiento de proporcionalidad justa tendrá en cuenta el cambio de condiciones de recepción en los diferentes receptores y agendará las transmisiones desde/hacia los suscriptores cada vez que las condiciones de recepción estén peores que lo normal.

## Round-Robin egoísta

Es una variación del algoritmo normal, con dos colas. En la primera están los procesos "aceptados", que se ejecutan compartiendo el tiempo de procesador mediante round-robin. En la segunda están los procesos "nuevos", y a ella se incorporan los procesos nuevos que tienen que ser ejecutados. La prioridad de los procesos en ambas colas se incrementa según dos tasas diferentes (siendo mayor la tasa de los procesos "nuevos"), de tal manera que cuando la prioridad de un proceso en la cola de "nuevos" alcanza a la de los procesos "aceptados", se pasa a dicha cola y comienza a ejecutarse, compartiendo el procesador con ellos.