Este documento describe diferentes métodos y modelos para la migración de código entre máquinas. Explica que existen diferentes tipos de movilidad dependiendo de qué segmentos del proceso migran, si es iniciado por el remitente o destinatario, y si la ejecución ocurre en el proceso de destino o uno separado. También discute los desafíos de migrar recursos y código entre sistemas heterogéneos.
2. MÉTODOS PARA LA MIGRACIÓN DE CÓDIGO
Razones para la migración de
código
Rendimiento
-Repartir la carga computacional
-mejorar la capacidad o
velocidad de respuesta para un usuario
La mejora del rendimiento a través de la migración de código se basa en razones
cualitativas.
3. La migración de código se basa en la presunción de que se tienen que procesar
datos cerca de donde se reside.
Particionar tareas.
Mejorar el rendimiento mediante el paralelismo a través de la velocidad de
respuesta.
-distribuyendo el procesamiento entre
máquinas para aumentar el grado de
paralelismo.
-agente móvil.
4. Flexibilidad
-Crear particiones de las aplicaciones
en diferentes partes y decidir por
adelantado donde se van a ejecutar.
Si el código se puede trasladar en diferentes
maquinas, se puede configurar sistemas
distribuidos en forma dinámica.
5. El principio de la comunicación dinámica de un cliente para comunicarse con un
servidor, el cliente primero recupera el software necesario y luego invoca al
servidor.
6. Ventajas del modelo de descarga dinamico:
-El software no tiene que estar preinstalado para la comunicación
con los servidores.
-Mientras las interfaces sean estandarizadas se puede mover el
protocolo del cliente si es necesario.
Desventajas:
-Seguridad.
7. Modelos para la migración de
código
Se basa en el movimiento de programas entre
maquinas, con la intención de que dichos
programas se ejecuten en el destino.
Los diferentes modelos existentes, descritos por
Fuggetta y colaboradores (1998) nos dicen que
es un proceso y consta de tres segmentos:
8. Segmento de código: es la parte que contiene el
conjunto de instrucciones constitutivas del
programa en ejecución.
Segmento de recurso: contiene referencias a
recursos externos necesarios para el proceso,
tales como archivos, impresoras etc.
Segmento de ejecución: para almacenar el estado
actual de la ejecución de un proceso, el cual
consta de datos privados, la pila, y por supuesto,
el contador de programa
9. Respecto a los segmentos que migran:
Movilidad débil: solo migra el segmento de código
(p.ej: los Applets de Java) requiere solamente que
una maquina de destino pueda ejecutar el código,
prepara al código para que sea portable.
Movilidad fuerte: migran el segmento de código y
el segmento de ejecución. Un proceso se puede
detener, y posteriormente trasladarse hacia otra
maquina, y luego continuar su ejecución a partir del
punto en donde se quedó.
10. Respecto a quien inicia el proceso:
Migración iniciada por el remitente: la migración
empieza en la maquina donde reside el código o
donde se ejecuta( se hace cuando los
programas se cargan al servidor de computo).
Migración iniciada por el destinatario: la maquina
de destino toma la iniciativa para realizar la
migración de código. (Los applets de Java)
11. Mecanismo
de
movilidad
Movilidad
débil
Movilidad
fuerte
Movilidad iniciada
por el remitente
Movilidad iniciada
por el destinatario
Movilidad iniciada
por el remitente
Movilidad iniciada
por el destinatario
Ejecución en proceso
de destino
Ejecución en proceso
de separado
Ejecución en un
proceso separado
Ejecución en proceso
de destino
Migración del
proceso
Migración del
proceso
Clonación del
proceso
Clonación del proceso
12. MIGRACIÓN Y RECURSOS LOCALES
Migrar el segmento de recursos muchas veces puede ser problemático. Por
ejemplo migrar la referencia a un socket abierto TCP de una máquina a
otra.
La clave para entender las posibilidades de migración del segmento de
recursos radica en el enlace que exista entre el recurso y el proceso y
el recurso y la máquina
13. TIPOS DE ENLACES DE PROCESOS A RECURSOS
• El enlace mas fuerte es cuando un proceso hace referencia a un recurso
mediante su identificador.
Ej.: URL, dirección TCP, etc. En este caso el recurso es único y debe mantenerse
la asociación.
• Un modo mas débil del enlace de proceso a recursos es cuando se requiere
solamente el valor de un recuso:
Ej.: Cierta biblioteca de código.
14. La forma mas débil de enlace es cuando un proceso indica que requiere solamente
un recurso de un tipo especifico.
Ej.: Terminal, disco, etc.
15. ENLACES DE RECURSO A MAQUINA
• Recursos no adjuntos: Se puede trasladar fácilmente entre diversas
maquinas ya que no existe una asociación.
Ej.: Ficheros de datos únicamente utilizados por los procesos que migran.
• Recursos adjuntos: trasladar o copiar un recurso adjunto puede ser
posible, pero a un costo alto.
Ej.: Bases de datos o sitios web completos.
16. Recursos fijos: Están ligados a una maquina especifica y no se pueden trasladar.
Ej.: Socket TCP.
17. No adjunto Adjunto Fijo
Por identificador
Por valor
Por tipo
MV (o GR)
CP (o MV,
GR)
RB (o MV,
CP)
GR (o MV)
GR (o CP)
RB (o GR,
CP)
GR
GR
RB (o GR)
Enlace
proceso a
recurso
GR establece una referencia global de sistema
MV traslada el recurso
CP copia el valor del recurso
RV reenlanza el proceso al recurso disponible de manera
local
18. • Establecer una referencia global puede ser
mas que solamente hacer uso de URL, y
que el uso de dicha referencia en ocasiones
es prohibitivamente costoso.
un ejemplo de donde se establece una
referencia global no siempre es tan fácil al
migrar un proceso que hace uso del punto
final de la comunicación global. En ese caso,
estamos tratando con un recurso fijo al cual
el proceso se enlaza mediante un
identificador.
19. La principal desventaja de este método es
que cada vez que la maquina fuente falle, la
comunicación con el proceso de migración
pudiera interrumpirse.
La solución alternativa es tener todos los
procesos que se comunican con el proceso
de migración, modificar su referencia global,
y enviar mensajes al nuevo punto final de
comunicación en la maquina destino.
20. Cuando tratamos con referencias por valor
la situación es diferente.
Un ejemplo es:
(considerando un recurso fijo)
La combinación de un recurso fijo y una
referencia por valor ocurre cuando un
proceso asume que la memoria entre
procesos puede compartirse. Establecer
una referencia global, en este caso, podría
significar que necesitamos implementar
una forma distribuida de memoria
compartida.
21. El caso mas sencillo es tratar con recursos no
adjuntos. La mejor solución es copiar (o trasladar)
el recurso al nuevo destino, a menos que se
encuentre compartido por un numero de proceso.
El ultimo caso trata con referencias por tipo. La
solución mas evidente es la de volver a enlazar el
proceso a un recurso local disponible del mismo
tipo. Solamente cuando dicho recurso no este
disponible necesitaremos copiar o trasladar el
original a un nuevo destino, o establecer una
referencia global.
23. Un sistema heterogéneo es aquel que se
encuentra compuesto por hardware con
características físicas distintas entre sí, y
software con características operativas
distintas entre sí, pero que se pueden
comunicar utilizando medios comunes.
24. El problema que acarrea la heterogeneidad son
referentes a la portabilidad.
Las soluciones para procesos de migración y para
ambientes de programación completa.
Es posible desacoplar una parte del sistema
subyacente y realmente migrarla a otra maquina.
Una de la razones para esperar una migración de
ambientes completos es que permite la continuación
de operación mientras una maquina necesita
detener sus ejecución.
25. Maneras de manipular la migración
Empujar paginas desde memoria hacia la nueva
maquina y reenviar las que se modificaron
posteriormente.
Detener la maquina virtual actual; migrar la
memoria, y comenzar una nueva maquina virtual.
Dejar que la nueva maquina virtual atraiga las
paginas cuando sea necesario, permitiendo que
los procesos comiencen dentro de una nueva
maquina virtual.
26. El efecto general es que, en vez e
migrar los procesos, sabemos
que podemos trasladar entre
máquinas a sistema operativo
completo