The Off++ kernel is an object oriented system. However, the boundary
between the user and the kernel is procedural: portals are used to
perform system calls (implemented in turn by means of traps), as can
be seen in figure
.
The path for a system call proceeds as follows:
Only step
is procedural. Both user and kernel objects
think that they are calling now and then to other objects. But
whenever a protection domain has to be crossed, a portal is used.
In this way no remote method invocation has to be built inside the kernel so that it could be kept simple.
Thus, the only actual system calls are those needed to implement the portal delivering mechanism. Remaining system services are first provided by means of portals and then wrapped at user level by objects.