Continuando con la línea de trabajo en SSOO distribuidos, los
desarrolladores de Amoeba han seguido trabajando en la implementación
de otros sistemas, recientemente, Paramecium
[168] (un sistema distribuido basado en
kernel).
Paramecium emplea un
kernel que ofrece servicios de soporte para
sistemas de objetos distribuidos que implementan los servicios del
sistema. A diferencia de Off, Paramecium explora la distribución
del sistema a un mayor nivel de abstracción, con lo que se pierden
oportunidades para adaptar el SO a las necesidades de las
aplicaciones.
En Paramecium es factible extender dinámicamente el núcleo, el mecanismo empleado es permitir la inclusión en el sistema de nuevos objetos que implementan las extensiones del mismo. Se permite que algunas de estas extensiones ejecuten en modo privilegiado como si del núcleo se tratase (lo que recuerda a la implementación del módulo de gestión de memoria virtual en Spring).
Este enfoque no es patrimonio de Paramecium, de tal suerte que otros sistemas han adoptado la misma línea de diseño que apreciamos en Paramecium, siguiendo el modelo de sistemas distribuidos de objetos. Entre estos sistemas encontramos a Spring [84], Nanos [76], Ra [7] e incluso Clouds [149]. A diferencia de éstos, Paramecium trata de suministrar sólo lo estrictamente indispensable, por lo que podría considerarse como un sistemas más próximo a Off que estos otros.
El problema en el caso de Paramecium radica en que está centrado en mecanismos de alto nivel de abstracción (p.ej.: se considera primariamente el soporte necesario para el lenguaje Orca [8]). Así, incluye soporte para replicación y otros mecanismos que no es posible adaptar. También incluye una arquitectura de nombrado y localización de objetos que deben seguir las aplicaciones que deseen utilizar el sistema.
La esencia del problema es que todos los mecanismos básicos de soporte para la implementación de sistemas de objetos distribuidos están incorporados en el sistema. De hecho, el sistema incorpora como abstracción básica el objeto distribuido (un objeto cuyo estado está particionado entre un conjunto de nodos determinado). En todos aquellos casos es que tengamos aplicaciones que no están orientadas a objetos es muy posible que estemos empleando facilidades innecesarias.