Los servidores del sistema están implementados como módulos de código
que ejecutan con el procesador en modo kernel. Ésto impide que los
usuarios accedan directamente a la implementación de los servicios del
sistema (aunque si puedan leer su estado). Sólo mediante invocación
de portales pueden las aplicaciones ejecutar código del
kernel.
En la implementación actual, los servidores del sistema están
co-ubicados en un único dominio de protección, el dominio del
kernel,
aunque nada impediría cargarlos en distintos dominios de protección
(por ejemplo para probar nuevas implementaciones y encapsular aquellos
servidores en cuya implementación no confiamos).
Como acabamos de mencionar, el acceso a los servicios del sistema se realiza mediante portales (ver figura 3.3). El servidor de portales es, por lo tanto, el único que incorpora realmente llamadas al sistema, implementadas éstas de forma tradicional mediante traps. Consecuentemente, cada servidor posee un portal (como puede verse en la figura 3.1) como único punto de acceso. Esto, que ya es práctica usual en los SSOO (por ej., en Mach [2]), permite que los usuarios ignoren el dominio de protección en que se encuentran realmente los servicios del sistema puesto que la invocación de portales independiza al usuario de los dominios de protección involucrados en una llamada. Como beneficio directo, en aquellas ocasiones en que todo un nodo se destina a un único fin (como en sistemas de tiempo real, o en nodos dedicados a ser únicamente servidores de Web, etc.) es posible emplear un único dominio de protección para aumentar el rendimiento. Incluso en tal caso, los usuarios verían los servicios del sistema como una serie de portales que pueden invocar.

Figure 3.3: Llamadas al sistema.
Otro beneficio del empleo de portales es la habilidad para realizar
interposiciones o redefiniciones de los servicios del sistema. Para
acceder a un servicio del sistema cualquier usuario emplea el
identificador de portal del servidor que los implementa. Estos
identificadores los suministrará habitualmente el servicio de nombres
implementado por el SO
. Si
dicho servicio de nombres engaña a una aplicación interesada en el
portal de determinado servicio del sistema y le da un identificador de
portal diferente, esta utilizará una implementación diferente de dicho
servicio. Esto se puede emplear para simular polimorfismo (emplear
distintas implementaciones para suministrar el mismo servicio) en los
servicios del sistema.