SPRITE (SISTEMA OPERATIVO)

Sprite es el nombre de un sistema operativo distribuido con un núcleo monolítico desarrollado por la University of California, Berkeley, más concretamente por el grupo de investigación de John Ousterhout.
Este sistema operativo tiene la apariencia para los programadores de un sistema único, ya que la distribución se produce dentro del propio núcleo y de este modo, Sprite nos da la impresión de estar trabajando sobre un típico sistema UNIX.
 
TRABAJO INICIAL.
Las ideas al comienzo del trabajo con Sprite, eran las de crear un sistema que trabajara de forma "consciente" en red, y que al mismo tiempo lo hiciera de forma transparente para el usuario. El área primaria de trabajo fue la construcción de un nuevo sistema de archivos en red el cual hiciera uso de caché local del lado del cliente para mejorar el desempeño. Después de abrir el archivo y realizar algunas lecturas iniciales, la red solo sería usada bajo demanda, y la mayoría de las acciones del usuario ocurrirían en la caché. Utilidades similares permitían a dispositivos remotos ser mapeados en el espacio de la computadora local, permitiendo impresiones en red y otras tareas similares.
Muchos de los archivos Unix clave estaban basados en la red, incluidas cosas como el archivo de contraseñas. Asimismo, todas las máquinas en la red compartían el directorio root. Otras utilidades Unix comunes, tales como finger, fueron reescritas para hacerlas trabajar en red, escuchando a toda la gente conectada a través de la red. Esto hizo que una red Sprite trabajara como si fuera un gran sistema simple de tiempo compartido o una imagen de un sistema simple.
Otra adición clave en Sprite fue la migración de procesos, los cuales permitían a los programas ser movidos entre ordenadores en cualquier instante. El sistema mantenía una lista de ordenadores y de su estado y movía procesos automáticamente a ordenadores ociosos para mejorar el desempeño local. Los procesos podían también ser "desalojados" de ordenadores para mejorar su desempeño, causando que el iniciador original se moviese a otro ordenador en la red, o tomará el control de él de nuevo de manera local. Tareas largas (como compilar el sistema Sprite) podían aparentar ser muy rápidas.


FILOSOFIA DE DISEÑO.
El equipo de diseño de Sprite asume un modelo tradicional de computación, siguiendo la línea de UNIX, con estaciones de trabajo conectadas en red. Sostienen que la naturaleza distribuida del sistema debería mantenerse oculta en el núcleo.
En la forma en que los procesadores se asocian a los procesos, el S.O Sprite cada usuario tiene su propia estación de trabajo donde ejecuta sus procesos, además provee un mecanismo de migración para trasladar los procesos a otras máquinas que no estén siendo usadas.
COMO SE DA LA ASIGINACIÓN DE PROCESOS A PROCESADORES.

En Sprite la arquitectura contempla un conjunto de estaciones de trabajo y servidores de archivos. Es posible que una estación de trabajo tenga un conjunto de procesadores, sirviendo así como una pila de procesadores. En Sprite los procesos se ejecutan en la estación de trabajo donde el usuario inicio la aplicación.
Es posible ejecutar los procesos en otras estaciones de trabajo de manera explicita, utilizando una conexión remota a la estación de trabajo donde se desee que corran los procesos.
Sprite, además, permite la ejecución automática y transparente de procesos en otras estaciones de trabajo, utilizando el procedimiento conocido como migración de procesos. Mediante este mecanismo, se aprovechan las estaciones de trabajo que no están siendo usadas, un proceso “daemon” centralizado llamado “migd keeps” rastrea los servidores desocupados y les asigna procesos cuando es necesario. Cuando el propietario de una estación de trabajo retorna ha hacer uso de ella, entonces el proceso es migrado otra vez, de nuevo a la estación de trabajo de origen o a otra que este desocupada.


COMO LAS APLICACIONES VEN LOS SERVICIOS DE "SPRITE"

Sprite ofrece compatibilidad con las aplicaciones de UNIX, muchas aplicaciones de UNIX únicamente requieren ser re compiladas para ejecutarse adecuadamente. Para facilitar esta compatibilidad se brinda un sistema operativo de red que corre sobre estaciones de trabajo interconectadas, orientado a un sistema de archivos compartido de acceso consistente y alto desempeño, enfatizando la transparencia de localización en el acceso a archivos. Usa caché para los archivos en las estaciones de trabajo y también en el servidor de archivos,para lo que hace uso de espacio en su memoria principal, reduciendo las transferencias en la red y el uso del ancho de banda del disco, logrando un alto desempeño especialmente con aplicaciones que hacen uso intensivo de archivos. La comunicación entre procesos es pequeña, esta características es propia de los procesos de UNIX.  El método para la transparencia de localización a nivel de usuario es relativamente ineficiente. Aspectos como la migración de procesos y otros se han visto afectados y limitados por la compatibilidad con UNIX.
SISTEMAS DE ARCHIVOS.

En Sprite se mide el tiempo que toma el abrir y cerrar un archivo;  se considera el caché de cliente activado y desactivado. Se simula el uso de un archivo temporal sin datos, de 10 Kbytes, y 100 Kbytes, para medir el tiempo de creación de un archivo, escribir una cantidad fija de datos en este, y cerrarlo, entonces abrir el archivo, leer datos desde este, cerrarlo y finalmente borrarlo.


DESCONTINUACIÓN.

Sprite no era un sistema microkernel, y sufrió el mismo abanico de problemas que otros sistemas Unix en términos de complejidad de desarrollo, convirtiéndose cada vez más difícil de desarrollas mientras más funcionalidad era añadida. En los 1990s, estaba sufriendo, y el pequeño equipo que respaldaba el proyecto, simplemente no fue capaz de mantenerse al día con los cambios rápidos en Unix que estaban sucediendo en ese tiempo. El proyecto fue cerrado lentamente en 1994.