Documente Academic
Documente Profesional
Documente Cultură
Resumen El sistema operativo de microkernel Minix[1] brinda un excelente entorno para incorporarle funciones de hipervisor. El presente
trabajo busca disear y evaluar un planificador jerrquico que permita
seleccionar en primera instancia la mquina virtual y luego el prximo
proceso a ejecutar de esa mquina virtual.
El proyecto propone un algoritmo de planificacin de tipo token bucket (cubeta de fichas)[2] para la seleccin de las mquinas virtuales y
administracin de los tiempos de CPU para cada una.
Palabras Clave: Minix, sistema operativo, planificacin de procesos,
mquinas virtuales.
1.
Introduccin
Este trabajo fue realizado en el marco del proyecto UTN 1766 en la Facultad Regional
Santa Fe.
2.
Contexto de trabajo
3.
3.1.
En un sistema de multiprogramacin, frecuentemente existen mltiples procesos que compiten por la CPU. Cuando hay ms de un proceso en estado de
listo y slo una CPU disponible, el OS debe decidir cul de estos procesos correr
primero. La parte del OS que toma esta decisin se conoce como planificador.
Minix 3 utiliza un algoritmo de planificacin por prioridades. Cada proceso
tiene una prioridad inicial, relacionada a la arquitectura que se muestra en la
figura 1, donde los procesos de capas inferiores tienen mayor prioridad que la de
las superiores.
El planificador mantiene 16 colas de procesos ejecutables en estado de listo,
una por prioridad, como se muestra en la figura 3.
Dentro de cada cola, se aplica un algoritmo de round robin. Cuando a un
proceso que se est ejecutando se le termina el quntum es movido al final de la
cola y se le asigna un nuevo quntum. En cambio, cuando un proceso que estaba
bloqueado pasa a listo, es puesto al principio de la cola y no se le da un nuevo
quntum sino que termina de ejecutar lo que le quedaba antes de ser bloqueado.
Cuando un proceso se bloquea o recibe una seal kill, es removido de la cola del
planificador.
Soluciones propuestas
// Tareas
// Procesos
// IDLE
1
Por simplicidad de implementacin, se eligi t = 128
.
Funciona de la siguiente manera: al iniciar la VM0, sta tiene asignados 128
tokens. Cuando se inicia una VMi el sistema extrae BSizei tokens de la VM0 y
se los asigna a VMi. El tamao de bucket BSizei se obtiene como parmetro al
iniciar una VM y no puede superar la cantidad de tokens que tenga VM0 en ese
momento. Esto implica que la sumatoria total de los BSizei nunca ser mayor
a 128. Al detener una VM, sus tokens asignados se le devuelven a la VM0.
La VM0 es un caso especial. La asignacin de tokens se realiza con el nico propsito de distruibuirlos a las distintas VMs y est excenta del conteo de
tokens, ya que por ser el hipervisor sus procesos son prioritarios para el funcionamiento del sistema.
La seleccin de las VMs es en round robin, con la siguiente prioridad:
on_timer_tick():
if (running_vm != 0):
// Le quita un token a la VM en ejecucion
tokens[running_vm] --;
// Se reduce el tiempo para el proximo refresh
time --;
if(time == 0):
// Se refresca el sistema
time = t_r
for i in vms_activas:
tokens[i] = BSize[i]
(1)
pick_vm():
search_VM0();
search_for_tasks(true);
if(proc_ptr != NULL):
return;
search_for_proc(true);
if(proc_ptr != NULL):
return;
search_for_tasks(false);
if(proc_ptr != NULL):
return;
search_for_proc(false);
if(proc_ptr != NULL):
return;
proc_ptr = IDLE;
return;
// IDLE
4.
Evaluacin de desempeo
Priorizacin de las VMs. Con el mismo escenario anterior, se mide la proporcin de CPU utilizada por cada VM. El porcentaje utilizado por VM0 se
mantiene constante, mientras que la proporcin de uso de CPU utilizado por
VM1 y VM2 es proporcional a sus respectivos tamaos de bucket, como se puede ver en la figura 5. De este modo, la VM con mayor tamao de bucket tendr
mayor tiempo de uso de CPU.
que se le asigne a cada VM. Sin embargo, debe tenerse en cuenta que un tamao
de bucket alto puede generar delays debido a que aumenta el tiempo de refresco
del sistema.
5.
El trabajo a futuro consiste en implementar el algoritmo presentado en este artculo para reemplazar el algoritmo de round-robin que actualmente est
utilizando Mhyper.
Referencias
1. Tanenbaum, A. S., Woodhull, A. (2006). Operating Systems: Design and Implementation - 3o edicin. Prentice Hall.
2. Tanenbaum, A. S. (2003). Redes de Computadoras - 4o edicin. Prentice Hall.
3. Tanenbaum, A. S. (2009). Sistemas Operativos Modernos - 3o edicin. Prentice Hall.
4. SimSo - Simulation of Multiprocessor Scheduling with Overheads.
http://homepages.laas.fr/mcheramy/simso/
5. XEN Credit Scheduler. http://wiki.xen.org/wiki/Credit_Scheduler