Está en la página 1de 7

MANEJO DE LOS PROCESOS DENTRO DE EL

SISTEMA DISTRIBUIDO AMOEBA.


Erwing Paúl Solórzano Larrea
Universidad Politécnica Salesiana, Guayaquil
erwing1394@gmail.com

Abstract--- Los sistemas distribuidos vago acoplado, si está por encima de 100, el
consisten en una gran colección de sistema apenas está acoplado.
computadoras separadas físicamente y Ya en la vida real el que determina el tiempo
conectadas entre sí por una red de que se requiere para poder establecer una
comunicaciones, cada máquina posee sus comunicación, es el hardware de
componentes de hardware y software pero comunicación junto con el sistema operativo.
que aparecen ante el mundo como una sola, Dentro de un sistema conformado por un gran
la pregunta que nos hacemos es: ¿Puede ser número de CPUs en un solo plano y además
posible para un procesador dentro de un con memoria compartida, hay mucha
sistema distribuido escribir una palabra en posibilidad en que un procesador pueda
la memoria de otro procesador en un escribir un dato en la memoria de otro en tan
tiempo relativamente corto, que resulte solo microsegundos. Si analizamos
imprescindible al elegir implementar este procesadores que realicen la comunicación por
tipo de sistemas? En este documento medio de una red de área local usando
analizaremos la manera en que los sistemas mensajes veremos que necesitan de
distribuidos manejan sus procesos, milisegundos para enviar un mensaje y tener
presentando ejemplos y soluciones, para una respuesta. Ahora, si usamos redes de área
mostrar el funcionamiento de un sistema amplia, tener tiempos de comunicación de
existente, tomaremos como referencia al cientos de milisegundos e incluso más, sería
sistema AMOEBA. algo común.

Estos parámetros de hardware dan lugar a dos


I.- Introducción tipos de sistemas distribuidos, cada uno con
sus propias características. Estos sistemas
Cuando utilizamos un sistema distribuido, difieren en términos de cómo los usuarios ven
normalmente una estación de trabajo es el sistema, cuánta autonomía tienen los
utilizada por una solo persona, pero cuando procesadores individuales, cómo se reparten
nadie las está usando, están disponibles como los problemas entre los procesadores, cómo
recursos de cómputo para otras estaciones de migra el trabajo entre los procesadores, cómo
trabajo. Junto con procesadores dedicados se equilibra la carga, cómo la comunicación
específicamente a la ejecución de programas entre procesos se realiza, ya sea que el sistema
de usuario, las estaciones de trabajo inactivas sea homogéneo o heterogéneo, y finalmente
forman un grupo de procesadores. En los qué tan confiable es el sistema total y cuáles
servidores compartidos se les proporcionan a son los modos de falla.
las máquinas un sistema de archivos
distribuido, servicio de nombres, puertas de Por un lado tenemos a los sistemas débilmente
enlace a Internet, acceso a impresoras, etc. acoplados, donde la compartición de los
recursos necesaria para proveer un servicio
El problema clave que distingue estos sistemas integral de cómputo, está dada por algunas de
es el grano de la computación, que puede ser las computadoras de la red y estas son
aproximadamente expresado como el tiempo accesadas por medio del software del sistema
de cálculo, dividido por el tiempo de que corre en todas estas máquinas, usando la
comunicación. Si es que esta cantidad se red para coordinar su trabajo y para trasmitir
encuentra por debajo de 10, podemos decir que los datos entre ellas.
tenemos un sistema estrechamente acoplado.
Si está entre 10 y 100 tenemos un sistema

1
En otras palabras, para el usuario, todo el Para citar un ejemplo: Ciertos sistemas de
sistema parece un tradicional sistema de archivos distribuidos nos ofrecen micro
tiempo compartido multiusuario, en lugar de transacciones. Empieza con el usuario
una red de máquinas independientes iniciando la transacción, especifica que esta
pueda leer y escribir archivos para que por
Por el otro lado tenemos los sistemas último se confirme la transacción. El sistema
fuertemente acoplados, estos integran a varios luego ejecuta la transacción completa hasta su
procesadores dentro de un sistema de hardware finalización o falla, dejando todos los archivos
integrado bajo el control de un solo sistema en su estado original. Ese sistema de archivos
operativo. El sistema operativo asigna los está diseñado para poder utilizar múltiples
procesadores y los espacios de memoria a las procesadores y discos internamente, pero con
tareas de los usuarios y les permite que estas respecto a la confiabilidad, no hay algo que el
corran concurrentemente. usuario pueda hacer. En un ejemplo diferente
El hardware de entorno incluye memoria tomemos como referencia un sistema con un
compartida o una conexión de alta velocidad rack de procesadores, los cuales se pueden
entre los distintos procesadores y unidades de asignar dinámicamente a procesos solicitados.
memorias del sistema con un solo sistema Un proceso puede solicitar procesadores,
unificado de direccionamiento. configurarlos para que trabajen en el mismo
Muchas veces los diseñadores del sistema problema y luego aceptar la mayoría de
buscan la transparencia mediante el uso de respuestas cuando todos hayan regresado.
múltiples procesadores con miles de CPU, Aquí podemos decir que el paralelismo es
pero si no se programa el paralelismo explícito. La conclusión que podemos sacar de
explícitamente, será difícil mantener ocupados estos ejemplos es que los sistemas con un
a todos los procesadores. paralelismo explícito suelen ser más flexibles,
la desventaja es que así mismo ameritan más
Para ayudar a la comprensión definiremos al trabajo por parte del usuario.
paralelismo como ejecutar más instrucciones
en menos tiempo, aunque las instrucciones 2.- SISTEMA OPERATIVO DISTRIBUIDO
sigan tardando lo mismo en ejecutarse. AMOEBA

El paralelismo en software es considerado Este es un sistema distribuido que se puede


como el caso ideal de la ejecución de las ejecutar en diferentes tipos y marcas de
instrucciones que forman parte de un computadora. La intención es que se deba
programa, ya que no toma en cuenta las ejecutar en una red con al menos cinco
limitantes del hardware con que el mismo va computadoras. A pesar de lo que es hoy
ser ejecutado. técnicamente posible ejecutar la ameba con
Paralelismo en hardware es la ejecución de un sólo un procesador, no es una forma
programa tomando en consideración el satisfactoria para el uso del sistema. De un
hardware con que va a ser ejecutado. sistema autónomo (con máquinas secundarias
de tal vez más) la máquina principal tiene que
En estos sistemas en muy común preguntarse estar equipado con al menos 64 MB de RAM
si el paralelismo que se ha proporcionado es (128 MB recomendado) y 500 MB de espacio
explícito o implícito. Esta cuestión tiene en disco. Es, después de todo, un sistema
implicaciones que son importantes para los operativo distribuido.
aspectos en torno a la confiabilidad del
sistema. Ya que si el sistema detecta al usuario Para obtener buenos resultados desde el
como un solo procesador virtual, ya no habría sistema que debe tener un equipo distinto del
mucho por hacer con respecto a la servidor de archivos, una estación de trabajo
confiabilidad a nivel del usuario. Ésta tiene por usuario (para ejecutar la interfaz de
que ser manejada por el sistema. usuario) y un grupo de procesadores de la
En otra manera, si los usuarios pudieran piscina para realizar el trabajo real y ejecutar
controlar el paralelismo explícitamente, es varios servidores.
posible que la redundancia se utilice para
aumentar la confiabilidad.

2
El sistema Amoeba argumenta que el cliente segura). Cuando un cliente falla durante una
procesa la comunicación con los servicios a transacción, la respuesta se pierde.
través de transacciones/mensajes y usa
capacidades para lograr acceder a los servicios Una solicitud de kernel es solo una solicitud de
así como a los objetos que estos servicios una operación en un objeto mantenido por el
implementan. grano, una solicitud de kernel, o una llamada
al sistema, es una transacción con el Servicio
2.1 MANEJO DE LOS PROCESOS EN de Kernel.
AMOEBA. Por lo tanto, en principio, Amoeba podría
tener solo las llamadas del sistema para hacer
Las capacidades que anteriormente hemos transacciones de mensajes. En la práctica, sin
mencionado, se utilizan como protección, así embargo, es más eficiente implementar
como una forma principal de atender algunas de las solicitudes de servicio de kernel
solicitudes y realizar operaciones en objetos. muy frecuentes como llamadas ordinarias del
Si el cliente envía una solicitud, el sistema sistema.
usará el puerto para determinar qué servicio Las transacciones de Amoeba al estar
manejará la solicitud, luego se procede a bloqueadas, no nos permite usarlas para poder
buscar un servidor para ese servicio a través de crear paralelismo. Amoeba usa procesos
una operación de localización. El servidor paralelos para lograrlo. Mejor dicho procesos
utilizará la parte privada de la capacidad para paralelos ligeros, llamados tareas. Para
que el objeto sea identificado, una vez mejorar la eficiencia, un espacio de
realizada la solicitud, el servidor devolverá direcciones puede ser compartido por varias
una respuesta, Los servicios en su mayoría son tareas. Esto se considera como un clúster.
ejecutados en el espacio del usuario. El kernel Las tareas son fáciles de crear, programar y
de Amoeba solo brinda el mínimo servicio, por destruir, con el fin de que los programadores
ejemplo: facilidades de transacción de usen tareas para pequeñas unidades de trabajo.
mensajes, gestión de procesos y vías de acceso
a periféricos. Por ejemplo el servicio de
archivos, es un servicio de espacio de usuario 3. EL SERVIDOR DE KERNEL
sin privilegios especiales, excepto el del
conocimiento de las capacidades para llegar a El objetivo del kernel de Amoeba es buscar la
los discos en donde se almacenan los archivos. abstracción mediante los clústers, segmentos y
Las transacciones de mensajes están tareas. Al clúster lo podemos definir como un
realizando bloqueo y el sistema no espacio de direcciones virtuales, el cual consta
proporciona almacenamiento en búffer. de un número de segmentos y muchos hilos de
Cuando un servidor llama una get-request control, conocidas también como tareas. En
(puerto, capacidad, buffer de solicitud), (el son de la eficiencia las tareas comparten un
puerto identifica el servidor al sistema), el espacio de direcciones, pueden intercambiar
servidor está bloqueado hasta que llegue una información entre sí de manera en la memoria
solicitud. El servidor devuelve una respuesta compartida, y dado que tienen poco contexto,
con put-reply (replybuffer), que no bloquea. el cambio de tareas se logra hacer más rápido.
Cuando el cliente llama una transacción El concepto de tareas se utiliza en varios
(capacidad, requestbuffer, replybuffer), sistemas distribuidos por módem, en
bloquea hasta que la respuesta del servidor es particular, V [1], Mesa [4] y Topaz. *
recibida.
En caso de falla, se le dice al cliente que no se
pudo llegar al servidor, o que no se recibió 3.1. SEGMENTOS
respuesta.
En el primer caso, el cliente puede volver a Es un objeto gestionado por un servicio de
intentarlo de forma segura; En este último Kernel, se crean utilizando una llamada
caso, el cliente tendrá que averiguar si la falla seg_map para asignarles un espacio de
ocurrió antes, durante o después de la dirección de clúster. Los segmentos no se
ejecución de la solicitud (a menos que la pueden compartir entre clústeres. En la figura
solicitud fuera impotente; en este caso, la 1.1. hemos representado las llamadas de
solicitud siempre se puede repetir de forma

3
gestión de segmentos, para una mejor
comprensión. El Servicio de Kernel también puede gestionar
clústeres, los cuales mediante una solicitud
LLAMADAS DE SISTEMA CreateCluster hacia el servidor del kernel,
pueden ser creados. El parámetro de la
sid -= seg_map(segment, address, length, how)
seg_unmap(sid) solicitud es un clúster-descriptor el cual
seg__grow(sid, newlength) describe el estado inicial del clúster
seg_info() describiendo el estado de sus tareas, el espacio
de direcciones en el que se ejecutarán estas
tareas y el procesador en el que el clúster debe
TRANSACCIONES
ejecutar. En la figura 1.2 hemos ilustrado un
Seg Create(kemelcap, incap, outcap) descriptor de clúster para ayudar a la
Seg_Read(capability, offset, buffer, count) comprensión.
Seg_Write(capability, offset, buffer, count)
length = Seg_Length(capability)
Seg_Delete(capability) Descriptor de Host

Contabilización y
Programación

FIGURA 1.1. Llamadas de sistemas y transacciones


para gestión de segmentos Administrador de
excepciones
La diferencia fundamental entre las llamadas Numero de segmentos
al sistema y las transacciones es que las
llamadas al sistema son manejadas por el Descriptores de mapeo
kernel local y, por lo tanto, solo pueden usarse .
para manipular objetos locales, Sin embargo, .
.
las transacciones están dirigidas a un servicio
que puede ser tanto local como remoto. Para
esto, la transacción Seg_Read se utilizará para
leer el contenido de segmentos remotos. Número de tareas
La llamada seg_map primero crea un nuevo
segmento, luego lo inicializa al contenido del Descripción de tareas
segmento señalado por la capacidad segment, El .
parámetro how especifica las opciones de .
.
asignación, como la asignación de solo lectura,
que al final puede ser afectado por llamadas FIGURA 1.2. Descriptor de
como seg_grow. La llamada devuelve un entero clúster
llamado identificador de segmento que
representa el segmento mapeado. Este entero
se usa en llamadas a seg_unmap y seg_grow.

Un segmento al no estar mapeado, se eliminará


del espacio de direcciones de un clúster, pero
continúa existiendo como un objeto dentro de
la memoria. Seg_unmap devuelve la capacidad
(capability) de este objeto para una mejor
relación con las transacciones de
administración del segmento, Seg_info nos
devuelve información acerca del mapa de
memoria actual del clúster que realizó la
llamada.

3.2. CLUSTERS

4
4. MANEJO DE LOS PROCESOS de migración debe ser grande para que tenga
sentido realizarla.
El intérprete de comandos es aquel que puede
crear y administrar un proceso, pero así mismo Pero muy aparte de esto, estoy seguro de que
otro proceso puede crear uno nuevo, lo único la migración puede llegar a ser útil. Cuando en
que se requiere es la capacidad que permite una estación de trabajo el propietario se
realizar la comunicación con un kernel de desconecta por la noche, la estación de trabajo
Amoeba. La mayoría de los usuarios tendrán puede convertirse en un procesador de grupo y
acceso a la capacidad de creación de clúster proporcionar servicio de ejecución de procesos
para el Kernel de Amoeba ejecutándose por su al resto del sistema. Pero, cuando el usuario
cuenta en su puesto de trabajo; es decir, si un propietario vuelve a iniciar sesión por la
usuario quiere, puede crear nuevos procesos mañana, los clúster de invitados que se estén
desde su estación de trabajo. ejecutando, serán migrados a una estación de
Las capacidades para crear procesos en los trabajo diferente.
procesadores de grupo se mantendrán
típicamente por un servicio de "Grupo de Los kernel implementan el mecanismo de
procesadores" el cual será un agente para migración del clúster. No implementan una
ejecutar programas en nombre de los procesos política; se toma la decisión de migrar un
del usuario. clúster y dónde migrarlo en un mayor nivel de
El equilibrio de carga es posible de alcanzar servicio. No analizaremos cómo se toma esta
mediante el servicio del grupo de decisión. El proceso que ordena la migración
procesadores, si es que este asigna se llamará Process Server.
procesadores de grupo juiciosamente. Cuando un clúster se mueve de una máquina a
otra, el kernel de la antigua máquina pone a
4.1. MIGRACIÓN DE LOS PROCESOS disposición el contenido de la memoria y el
descriptor del clúster al kernel de la nueva
Aunque los clústeres rara vez se trasladan a un máquina. El núcleo de la nueva máquina carga
nuevo host después de iniciarse, la migración el clúster en la memoria y lo inicia.
es un concepto central en los mecanismos de Llamaremos a estos núcleos Viejo anfitrión y
gestión del proceso en Amoeba. Cargar nuevos Nuevo anfitrión.
clústeres en la memoria, hacer puntos de
control, realizar volcados de núcleos, y la Analizaremos la migración de un clúster desde
depuración remota son situaciones similares a el punto donde el Servidor de Procesos (SP)
realizar la migración de un clúster. Si podemos haya decidido migrar el clúster hacia el nuevo
migrar un clúster de una máquina a otra, anfitrión. El SP tiene que establecer diversos
entonces la descarga, los puntos de control, la parámetros para manejar las señales del clúster
depuración, etc., deberían ser algo sencillo.. como depurador del clúster.

Todo comienza cuando, el SP le envía una


El equilibrio de carga mediante la migración señal al clúster que hace que el viejo anfitrión
del clúster es un área poco conocida y es lo congele en sus pistas y envíe un descriptor
dudoso si es muy útil con el tipo actual de de clúster al SP (Process Server actúa como el
estaciones de trabajo y redes. depurador para este clúster), después de esto el
Migrar un clúster de cinco megabytes, por SP envía el clúster descriptor al Nuevo
ejemplo, tomará al menos siete segundos, anfitrión en una solicitud de tipo RunCluster.
porque ese es el tiempo que tarda un protocolo El Nuevo anfitrión, cuando recibe la solicitud
de transporte rápido para copiar el contenido RunCluster crea los segmentos que sean
de memoria a través de un Ethernet de 10 necesarios, los inicializa enviando solicitudes
Mbit; Programas de 5 megabytes están muy Seg_Read al Viejo anfitrión y los asigna en el
poco frecuentes, especialmente como espacio de direcciones del nuevo clúster,
candidatos para la migración: Los clúster de Ahora que tenemos al cliente (Nuevo
larga vida son generalmente grandes también. anfitrión) y al servidor (Viejo anfitrión)
Lo que hace que la migración termine siendo podremos enviar y recibir desde la memoria
muy cara, pero la ganancia de una operación asignada.

5
Los contenidos de la memoria de un clúster se clúster. La sencillez en los mecanismos de
pueden copiar a través de Ethernet. Cuando comunicación entre procesos de Amoeba
termina la copia del contenido del segmento, el también ha sido vital para el éxito de nuestra
nuevo anfitrión iniciará el clúster y enviará investigación. Primero, las entidades
una respuesta al SP que alberga la capacidad comunicantes se nombran usando un
del nuevo clúster. SP luego elimina el clúster mecanismo de nomenclatura independiente de
anterior con una solicitud tipo DeleteCluster la ubicación que utiliza un servicio de
hecha al viejo anfitrión. localización subyacente para que descubra
Dejemos en claro que cuando la migración dinámicamente dónde deben enviarse los
estaba en progreso, el clúster aún existía en su paquetes. Ninguno de los aparatos de
host anterior en estado 'congelado', el kernel migración tienen que preocuparse por re-
respondió con una alerta a todos los mensajes enrutar mensajes, si no hay direcciones de
que llegaban al clúster congelado: "Intenta más reenvío deben de ser dejadas atrás; Los
tarde, este clúster está congelado". Después de antiguos anfitriones pueden olvidarse de la
haber eliminado este clúster, esos mensajes existencia de un clúster inmediatamente
pueden llegar a aparecer en cierto momento, después de completar la migración.
aunque el kernel ahora va a responder con algo
tipo: 'Este puerto es desconocido en esta Amoeba con sus protocolos simples,
dirección". El remitente luego tendrá que contribuye enormemente a la portabilidad de
proceder a realizar una operación de tipo clústers. Ya que posee pocos estados en los
localización para poder encontrar el nuevo que se puede estar por arbitrarios períodos de
paradero del clúster y así reestablecer la tiempo además de que es fácil poder migrar un
comunicación. clúster en estos estados, usando los mensajes
tipo: "Estoy congelado, no me molestes"
El protocolo para tratar las transacciones de descritos anteriormente. Si el protocolo se
mensajes durante la migración es más encuentra en cualquiera de los otros estados, el
perspicaz en comparación a lo descrito aquí, kernel de Amoeba puede esperar hasta que el
pero tomaría demasiado espacio para protocolo alcance un estado tipo ‘migrable'.
describirlo a la perfección. En pos de la
eficiencia en torno a las transacciones de La conclusión más importante a la que hemos
mensajes de Amoeba, el cliente y el servidor llegado es que de hecho si es posible construir
necesitan usar puertos de comunicación únicos un mecanismo que termine siendo simple y a
para que la localización no proporcione una su vez que sea suficiente para lograr realizar
dirección del servidor incorrecta, por ejemplo. tareas como: descargas, migraciones, manejo
de excepciones, checkpointing, y depuración.

5. CONCLUSIONES REFERENCIAS
1. - Process Management in a Distributed
En este artículo hemos ido construyendo un Operating System, (1988) Sape J. Mullender
conjunto coherente de primitivas para gestión Centre for Mathematics & Computer Science.
de procesos que incluye la manera en que se
manejan los procesos, la migración de 2. - Diseño de un Software de Intermediación
clústeres y puntos de control, todo esto implica de Comunicación para Sistemas Distribuidos
de mucho cuidado, no solo de los mecanismos de Tiempo Real Críticos en Java, Revista
que se ocupan directamente de la gestión de Iberoamericana de Automática e Informática
procesos, sino también con todo el entorno industrial 10 (2013).
circundante. En esta sección, se intentará
nombrar algunas de las consideraciones de 3. - José M. García Carrasco, Fco. José Quiles
diseño del sistema que facilitaron la Flor, Departamento de Informática
investigación. Escuela Universitaria Politécnica de Albacete.
El kernel de Amoeba proporciona un mínimo
de funciones: gestión de procesos y 4. - D. R. Cheriton and W. Zwaenepoel,
comunicación entre procesos. Por lo tanto, (October 1983). The Distributed V Kernel and
también hay una cantidad mínima de estados its Performance for Diskless Workstations,
que tiene que migrar cuando se migra un

6
Proc. Ninth ACM Symp. on Operating
Systems Principles, 128–140.

También podría gustarte