Sei sulla pagina 1di 4

Planificacin por reparto equitativo

Planificacin por reparto equitativo


Se usa en los sistemas multiusuario.
Cada usuario tiene asignado algn tipo de ponderacin, que indica la parte de los
recursos del sistema para el usuario como una fraccin de la utilizacin total de
dichos recursos. En particular, cada usuario dispone de una parte del procesador.
Este esquema debe funcionar de una forma ms o menos lineal, por lo que si un
usuario A tiene un peso dos veces mayor que el de un usuario B, entonces, a la
larga, el usuario A debe poder hacer el doble de trabajo que B. El objetivo de un
planificador por reparto equitativo es supervisar el uso, de forma que se asignen
menos recursos a los usuarios que han consumido ms de lo que les corresponde
y ms recursos a los que han consumido menos de lo que le corresponde.
En un sistema multiusuario, si las aplicaciones o los trabajos de los usuarios
pueden organizarse en forma de varios procesos (o hilos), se dispone de
una estructura para el conjunto de procesos que no se identifica con ningn
planificador tradicional. Desde el punto de vista del usuario, el inters no est en
cmo se comporta un proceso en particular, sino en cmo se comporta el conjunto
de procesos de usuario que constituyen una aplicacin. As pues, sera interesante
poder tomar decisiones de planificacin en funcin de estos grupos de procesos.
Este enfoque se conoce generalmente como planificacin por reparto equitativo.
La planificacin se lleva a cabo por prioridades, teniendo en cuenta la prioridad
bsica del proceso, su utilizacin reciente de la CPU y la utilizacin reciente de la
CPU por parte del grupo al que pertenece. Cuanto mayor es el valor numrico de
la prioridad, menor es sta. Las frmulas siguientes se aplican al proceso j del
grupo k.
CPUj(i) = CPUj(i - 1) / 2
GCPUk(i) = GCPUk(i - 1) / 2
Pj(i) = Basej + CPUj(i - 1) / 2 + GCPUk(i - 1) / (4 x Wk)
Donde:
CPUj(i) = Media ponderada de la utilizacin de la CPU del proceso j en el intervalo
i.
GCPUk(i) = Media ponderada de la utilizacin de la CPU del grupo k en el
intervalo i.
Pj(i) = Prioridad del proceso j al principio del intervalo i; los valores ms bajos
indican prioridades ms altas.
Basej = Prioridad de base del proceso j.

Wk = Peso asignado al grupo k, con la restriccin de 0 <= Wk <= 1 y S Wk = 1.


Cada proceso tiene asignada una prioridad de base. Esta prioridad desciende a
medida que el proceso y el grupo al que pertenece utilizan la CPU. En el caso de
la utilizacin del grupo, la media se normaliza dividiendo por el peso del grupo.
Cuanto mayor es el peso asignado al grupo, menos afecta su utilizacin a la
prioridad.

Implementacin de acciones:
Cada segundo t1: programacin a nivel de usuario
para cada usuario
Cada uso y actualizacin de los costos incurridos en los ltimos segundos t1
Usado por usuario = usageuser K1 + chargesuser
Restablecer recuento del costo
chargesuser = 0
Cada segundo T2: decaimiento de las prioridades del proceso
para cada proceso
priorityprocess priorityprocess = K2 (niceprocess + K3)
Cada segundo t3: ajuste de prioridad
prioritycurrent_process = prioritycurrent_process +
usagecurrent_user active_processescurrent_user acciones 2
current_user
En cada evento de programacin: el proceso de seleccin actual
chargescurrent_user = costo + chargescurrent_user + costo del evento
ejecutar el proceso con prioridad ms baja

Prioridad de normalizacin:
max_priorida = 0
for each process
if
max_priorida < priorityprocess priority_bound
then
max_priorida= priorityprocess
for each process
Scale priority to appropriate range

if
priorityprocess max_priorida
then
normalised_priorityprocess = (K4 1)
priorityprocess
max_priorida
else
normalised_priorityprocess = K4

Ajustando grupos:
for each group (descend hierarchy)
if
actual_machine_proportiongroup < K6 machine_proportion_duegroup
entonces
for each user in the group (descend hierarchy)
chargesuser = chargesuser actual_machine_proportiongroup K6
machine_proportion_duegroup

Potrebbero piacerti anche