next up previous contents
Next: 2.2.2 Tying portals and Up: 2.2 Exporting system objects Previous: 2.2 Exporting system objects

2.2.1 Traps and the OO model

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 [*].


  
Figure 2.1: System calls

The path for a system call proceeds as follows:

1.
  A user object calls a system object method.
2.
The system object is actually a wrapper that will translate the method invocation into a portal invocation.
3.
  The portal invocation will transfer the user control flow to the kernel.
4.
Inside the kernel, a system object method (that wrapped by the wrapper object in step [*]) will be called as part of the portal delivering mechanism.

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.


next up previous contents
Next: 2.2.2 Tying portals and Up: 2.2 Exporting system objects Previous: 2.2 Exporting system objects
Francisco J. Ballesteros
1998-05-25