Vanguardia (micrograno)

La vanguardia era un micrograno experimental desarrollado en Apple Computer a principios de los años 1990. Basado en el V-sistema, la Vanguardia introdujo identificadores del objeto estandarizados y un "sistema" de encadenamiento del mensaje único para el rendimiento mejorado. La vanguardia no se usó en ninguno de los productos comerciales de Apple y desarrollo terminado en 1997 cuando el grupo de investigación de Apple (ATG) se desmontó.

Conceptos básicos

La vanguardia era generalmente muy similar al V-sistema, pero añadió el apoyo a la programación orientada al objeto verdadera del sistema operativo. Esto significó que el grano y los interfaces del servidor se exportaron como objetos, que se podrían heredar y ampliarse en el nuevo código. Este cambio no tiene verdadero efecto en el propio sistema, es principalmente un cambio del código fuente que hace la programación más fácil.

Por ejemplo, la Vanguardia tenía una clase de la entrada-salida que fue apoyada por varios servidores diferentes, gestión de redes y servidores de archivos por ejemplo, con los cuales las nuevas aplicaciones se podrían relacionar importando el interfaz de la entrada-salida y llamando métodos. Esto también hizo nuevos servidores literarios mucho más fáciles, ambos porque tenían un estándar al programa a, así como ser capaz de compartir el código más fácilmente.

V semántica de mensajería

Un concepto clave a casi todos los microgranos es la demolición un grano grande solo en un juego de servidores que se comunican. En vez de tener un programa grande solo en el control del lado del hardware entero del sistema de ordenadores, estas clases de deberes se reparten a programas más pequeños que dan derechos de controlar partes diferentes de la máquina. Por ejemplo, podrían dar a un servidor particular el control del hardware conectado a una red, mientras el otro tiene la tarea de manejar los discos duros. Otro servidor manejaría el sistema de archivos, llamando ambos de estos servidores del nivel inferior. Las aplicaciones del usuario piden servicios enviando mensajes a estos servidores, usando alguna forma de comunicaciones de interproceso (IPC), a diferencia de la petición del grano para hacer este trabajo vía un syscall o trampa.

Bajo V el sistema IPC parece conceptualmente modelarse en llamadas a procedimiento remoto (RPC) desde el punto de vista de la aplicación cliente. La aplicación cliente importó un archivo de la definición del interfaz que contiene la información sobre las llamadas apoyadas por el grano u otras aplicaciones, y luego usó esta definición al paquete solicita. Cuando llamado, el grano asumiría inmediatamente, examinar los resultados y hacer pasar a la información al tratante adecuado, potencialmente dentro del propio grano. Cualquier resultado se devolvió entonces a través del grano al cliente.

En términos generales, la operación del sistema como aparece a la aplicación cliente de ser muy similar al funcionamiento con un grano monolítico normal. Aunque los resultados pasaran atrás podría venir de un tratante del tercero, esto era esencialmente invisible para el cliente. Los servidores que manejan estas solicitudes funcionaron de una moda similar a los clientes, conexiones iniciales con el grano para pasar datos. Sin embargo, los servidores generalmente engendraban nuevos hilos como requerido para manejar solicitudes durables del modo más largo. Cuando éstos se manejaron y las respuestas se fijan, el hilo se podría desasignar y los servidores podrían entrar un "reciben el modo" aguardada de solicitudes adicionales.

En contraste, la mayor parte de sistemas del micrograno están basados en un modelo de comunicaciones asincrónicas, a diferencia de llamadas a procedimiento sincrónicas. El sistema del micrograno canónico, Mach, modeló mensajes como la entrada-salida, que tiene varios efectos secundarios importantes. Primario entre éstos es que los planificadores de la tarea normales bajo sistemas parecidos a Unix bloquearán normalmente a un cliente que espera por una solicitud de la entrada-salida, por tanto de esta manera las acciones de hacer una pausa y reanudar aplicaciones que esperan en mensajes era incorporado ya al sistema subyacente. La desventaja a este enfoque es que el planificador es bastante "de peso pesado", y la vocación de ello era un cuello de botella de rendimiento serio y llevó a esfuerzos de desarrollo extensos de mejorar su actuación. Bajo el modelo V-System el mensaje que pasa arriba se reduce porque el planificador de proceso no se tiene que consultar, no hay ninguna pregunta en cuanto a quien se debería dirigir después – es el servidor llamado. La desventaja al V enfoque es que se requiere más trabajo del lado del servidor si la respuesta puede llevar tiempo para tratar.

Encadenamiento

Una adición principal al sistema IPC bajo la Vanguardia, a diferencia de V, era el concepto de cadenas del mensaje, permitiendo un mensaje solo enviarse entre varios servidores que se relacionan en un viaje de ida y vuelta solo. En la teoría, el encadenamiento podría mejorar la realización de operaciones multipaso comunes.

Considere el caso donde una aplicación cliente desea leer un archivo. Normalmente esto requeriría que un mensaje al grano encuentre el servidor de archivos, entonces tres mensajes adicionales al propio servidor de archivos - un resolviendo el nombre de fichero en un objeto id, el otro para abrir esto id, entonces finalmente el otro para leer el archivo. Usando el encadenamiento de la Vanguardia, un mensaje solo podría ser construido por el cliente que contuvo todas estas solicitudes. El mensaje se enviaría al grano, y luego se haría pasar al servidor de archivos quien manejaría tres solicitudes antes de devolver finalmente datos.

La mayor parte del problema de rendimiento normalmente asociado con sistemas del micrograno es debido a los interruptores del contexto ya que los mensajes se pasan de acá para allá entre aplicaciones. En el ejemplo encima de la marcha en un V sistema, tendría que haber un total de ocho interruptores del contexto; dos para cada solicitud ya que el cliente cambió a y del grano. En la Vanguardia usando una cadena reduciría esto a sólo tres interruptores; un del cliente en el grano, el otro del grano al servidor de archivos, y finalmente del servidor atrás al cliente. En algunos casos el elevado de un interruptor del contexto es mayor que el tiempo que necesita para dirigir realmente la solicitud, por tanto el mecanismo de encadenamiento de la Vanguardia podría causar mejoras de rendimiento de mundo real.

Nombramiento del objeto

V también había introducido un servicio del nombre distribuido simple. El servicio del nombre almacenó nombres de carácter "conocidos" que representan varios objetos en un distribuido V sistema, por ejemplo "2da impresora láser del suelo". Las aplicaciones podrían pedir el servidor del nombre objetos de nombre y se devolverían un identificador que permitiría que ellos se relacionen con ese objeto. El servicio del nombre no era un servidor separado y fue manejado por el código en el propio grano. El contraste esto con el servidor del nombre auténtico bajo el sistema operativo de la Primavera, que no sólo sabía sobre objetos dentro del sistema, pero también fue usado por otros servidores en el sistema para traducir sus nombres privados – nombres de fichero y Direcciones IP por ejemplo.

Bajo el V-sistema, los objetos en servidores se mandaron a vía una llave ad hoc privada de alguna clase, dicen un número entero de 32 bites. Los clientes pasarían estas llaves en los servidores a fin de mantener una conversación sobre una tarea específica. Por ejemplo, una aplicación podría pedir el grano el "sistema de archivos" y darse una llave de 32 bites que representa un programa id, y luego usar esa llave para enviar un mensaje al sistema de archivos pidiéndolo abrir el archivo "mis direcciones", que causarían una llave de 64 bites devuelta. Las llaves en este ejemplo son patentadas a los servidores, no había ningún formato clave común usado a través del sistema.

Esta clase del nombre que se resuelve era tanto común bajo V que los autores decidieron hacer estas llaves ciudadanos de primera clase bajo la Vanguardia. En vez de usar independientemente del ID'S del objeto que los servidores sólo resultaron usar, bajo la Vanguardia se esperó que todos los servidores entendieran y devolvieran una llave de 128 bites globalmente única, primeros 64 trozos que contienen un identificador del servidor, la segunda identificación de un objeto en ese servidor. El servidor id se mantuvo en el grano, permitiéndolo al reencaminamiento del mensaje sobre la red si el servidor referido estuviera en una máquina remota. Al cliente esto era invisible. No está claro si el id's se repartiera al azar para evitar "adivinar" por mal-intentioned el software.



Buscar