a client-side stub interpreter
We have built a research operating system in which all services are presented through interfaces described by an interface description language. The system consists of a micro-kernel that supports a small number of these interfaces, and a large number of interfaces that are implemented by user-level code. A typical service implements one or more interfaces, but is a client of many other interfaces that are implemented elsewhere in the system. We have an interface compiler that generates client-side and server-side stubs to deliver calls from clients to servers, providing location transparency if the client and server are in different address spaces. The code for client-side stubs was occupying a large amount of the text space of our clients, so a stub interpreter was written to replace the clientside stub methods. The result was that we traded 125K bytes of stub code for 13K bytes of stub descriptions and 4K bytes of stub interpreter. This paper describes the stub interpreter, the stub descriptions, and discusses some alternatives.
interpretation research operating system systems service interfaces language code compilation server locatability transparency addressing space text method paper user