Por lo general la comunicación entre los procesos en espacio de usuario y el kernel de un SO, se realiza mediante llamadas al sistema o interrupciones hardware, de manera que en un cierto momento en la ejecución de un proceso, se cambia el nivel de ejecución y pasa a tomar control el kernel, realizando las operaciones que correspondan a la llamada o interrupción en concreto. Pudiendo el kernel comunicar datos al proceso gracias a que el kernel hereda el entorno de ejecución del proceso, y por tanto tiene acceso a su espacio de memoria.
Hay otras opciones, como el "proc file system", que aunque es un metodo muy versatil, para aplicaciones complejas se queda corto. También hay SSOO que no hacen una distinción tan fuerte entre espacio de usuario y de kernel, pero pueden acarrear problemas de seguridad y sobre todo una perdida de abstracción (y por lo tanto de facilidad) en el desarrollo de aplicaciones.
De cualquier manera, todas estas opciones mencionadas adolecen de la limitación de ser locales a la máquina, limitación que no existe en el caso de un ORB, componente principal de una arquitectura distribuida tan potente como lo es OMA.
Aunque OMA considera la posibilidad de implementar el ORB (CORBA) en el kernel, ninguna empresa ni organización lo había hecho todavía. Ya hay una implementación GNU realizada en la universidad de Illinois, que porta el código de ORBit (ORB escrito enteramente en C para el proyecto GNOME) al kernel de Linux. Esta implementación se llama KORBit y la podemos encontrar en korbit.sourceforge.net
El tener un componente, que abstraiga las comunicaciones de la manera en que lo hace un ORB, y disponer de sus funcionalidades en aplicaciones diseñadas para ejecutar en el kernel, ofrece infinidad de posibilidades. Como por ejemplo distribuir la gestión de memoria del sistema operativo, poder hacer una monitorización de carga de un sistema distribuido de una manera mucho más fina, diseñar dispositivos de entrada/salida paralela sobre un sistema distribuido, etc.
En definitiva, lo que nos puede aportar esta facilidad de comunicación entre el kernel y los procesos es la posibilidad de desarrollar aplicaciones en el kernel, que hagan uso de toda la potencia de aplicaciones en espacio de usuario (pudiendo estar en otras máquinas) y que además son cómodas de desarrollar y depurar.