En informática, la migración de procesos es una forma especializada de gestión de procesos mediante la cual estos se trasladan de un entorno informático a otro. Si bien se originó en la computación distribuida , actualmente se utiliza de forma más generalizada. En máquinas multinúcleo (varios núcleos en un procesador o varios procesadores), la migración de procesos se realiza como parte estándar de la planificación de procesos , y resulta bastante sencillo migrar un proceso dentro de una misma máquina, ya que la mayoría de los recursos (memoria, archivos, sockets) no necesitan modificarse, sino únicamente el contexto de ejecución (principalmente el contador de programa y los registros).
La forma tradicional de migración de procesos se da en clústeres de computadoras donde los procesos se mueven de una máquina a otra, lo cual es significativamente más difícil, ya que requiere serializar la imagen del proceso y migrar o readquirir recursos en la nueva máquina. La primera implementación de migración de procesos se dio en el proyecto operativo DEMOS/MP en la Universidad de California, Berkeley , y fue descrita en un artículo de 1983 por Barton Miller y Michael Powell. [ 1 ] La migración de procesos está implementada, entre otros, en OpenMosix y el sistema operativo Sprite de la Universidad de California, Berkeley .
Variedades
La migración de procesos en informática se presenta en dos variantes: [ 2 ]
- Migración de procesos no preferente
- Migración de procesos que se realiza antes de que comience la ejecución del proceso (es decir, migración en la que no es necesario interrumpir el proceso ). Este tipo de migración de procesos es relativamente económica, ya que implica pocos gastos administrativos.
- migración de procesos preventiva
- La migración de procesos consiste en interrumpir un proceso, migrarlo y que continúe su ejecución en un entorno diferente. Este tipo de migración es relativamente costosa, ya que implica registrar, migrar y recrear el estado del proceso, así como reconstruir los canales de comunicación entre procesos a los que está conectado el proceso migratorio.
Problemas
Se producen varios problemas cuando un proceso en ejecución se traslada a otra máquina. Algunos de estos problemas son:
Redirección de E/S: si un proceso realiza operaciones de entrada/salida (E/S) en archivos o dispositivos asociados a una máquina específica, debe existir un mecanismo para redirigir el acceso a estos recursos incluso después de la migración del proceso. Esto implica la redirección del flujo de datos de E/S a través de la red y presenta desventajas en cuanto a seguridad, rendimiento y fiabilidad.
Comunicación entre procesos: los mensajes enviados a un proceso con ID P en la máquina M deben redirigirse a la nueva máquina N y al nuevo proceso con ID Q. La máquina de origen del proceso migrado debe conservar registros de los procesos migrados. Si se producen varias migraciones, la sobrecarga aumenta.
Memoria compartida : si uno de un grupo de procesos cooperativos migra a otro lugar y todos estos procesos utilizan un segmento de memoria compartida, entonces la red debe emular el acceso a la memoria compartida. Esto añade complejidad y ralentiza drásticamente el acceso a la memoria compartida para los procesos que han migrado fuera de la máquina que la contiene. El fenómeno por el cual una computadora anfitriona debe proporcionar servicios a un proceso que ha migrado se denomina dependencia residual.
Además de los problemas mencionados anteriormente, los sistemas operativos basados en procesos suelen mantener diversas tablas y estados para los procesos en ejecución. No existe una forma sencilla de recuperar toda la información administrativa de un proceso mediante una simple secuencia de operaciones de copia. Dependiendo de la ejecución del proceso, es necesario buscar, copiar, modificar y restablecer tablas en el sistema de destino. Por lo tanto, la replicación del estado de un proceso no es una tarea sencilla.
Referencia: http://www.klammeraffe.org/~fritsch/uni-sb/fsinfo/Papers/migrate/node4.html
Diseño de circuitos integrados
En el diseño e ingeniería de circuitos integrados, se utiliza una definición alternativa de migración de procesos . En este contexto, la migración de procesos o de diseño se refiere a un flujo de diseño para modificar y reducir el tamaño de un diseño de circuito integrado existente a un nuevo nodo tecnológico. La implementación de una migración de procesos puede realizarse manualmente, redibujando el diseño característica por característica, o mediante herramientas EDA / CAD automáticas . En sistemas de carga compartida, un proceso se migra de un nodo a otro mediante un mecanismo denominado migración de procesos.
En este informe no se introduce el concepto de proceso, ya que los procesos son un diseño bien conocido en los sistemas operativos. La migración de procesos se refiere a la movilidad de los procesos en ejecución (o suspendidos) en un entorno de computación distribuida. Generalmente, este término indica que un proceso utiliza una red para migrar a otra máquina y continuar su ejecución allí. En ocasiones, el término se utiliza para describir el cambio de ejecución de un procesador a otro dentro de la misma máquina.
Referencias
- computación en clúster