La programación de reparto justo es un algoritmo de programación para sistemas operativos de computadoras en el que el uso de la CPU se distribuye equitativamente entre los usuarios o grupos del sistema, a diferencia de la distribución equitativa de recursos entre los procesos. [1]
Un método común para implementar de manera lógica la estrategia de programación de reparto justo es aplicar recursivamente la estrategia de programación round-robin en cada nivel de abstracción (procesos, usuarios, grupos, etc.). El quantum de tiempo requerido por round-robin es arbitrario, ya que cualquier división igual del tiempo producirá los mismos resultados.
Este concepto fue desarrollado por primera vez por Judy Kay y Piers Lauder a través de su investigación en la Universidad de Sydney en la década de 1980. [2] [3]
Por ejemplo, si cuatro usuarios (A, B, C, D) están ejecutando un proceso cada uno simultáneamente, el planificador dividirá lógicamente los ciclos de CPU disponibles de modo que cada usuario obtenga el 25% del total (100% / 4 = 25%). Si el usuario B inicia un segundo proceso, cada usuario seguirá recibiendo el 25% de los ciclos totales, pero a cada uno de los procesos del usuario B se le atribuirá ahora el 12,5% del total de ciclos de CPU cada uno, lo que totalizará la parte justa del usuario B del 25%. Por otro lado, si un nuevo usuario inicia un proceso en el sistema, el planificador redistribuirá los ciclos de CPU disponibles de modo que cada usuario obtenga el 20% del total (100% / 5 = 20%).
Otra capa de abstracción nos permite dividir a los usuarios en grupos y aplicar el algoritmo de reparto equitativo a los grupos también. En este caso, los ciclos de CPU disponibles se dividen primero entre los grupos, luego entre los usuarios dentro de los grupos y, finalmente, entre los procesos para ese usuario. Por ejemplo, si hay tres grupos (1,2,3) que contienen tres, dos y cuatro usuarios respectivamente, los ciclos de CPU disponibles se distribuirán de la siguiente manera:
100% / 3 grupos = 33,3% por grupo
Grupo 1: (33,3% / 3 usuarios) = 11,1% por usuario
Grupo 2: (33,3% / 2 usuarios) = 16,7% por usuario
Grupo 3: (33,3% / 4 usuarios) = 8,3% por usuario