Check out the new USENIX Web site. next up previous
Next: Profiling. Up: Case Study: System Call Previous: Overview

Clustering mechanisms

We first describe the mechanisms used to realize system call clustering in a traditionally structured operating system. The goal, in addition to reducing boundary crossing costs, is to reduce the number of boundary crossings required. Specifically, we want to extend the kernel to allow the execution of a sequence of system calls in a single boundary crossing. The new mechanism must not compromise protection, transparency or portability, significant advantages provided by the existing system call mechanism. We now look at one such mechanism, the multi-call [17].

A multi-call is a mechanism that allows multiple system calls to be performed on a single kernel crossing, thereby reducing the overall execution overhead. Multi-calls can be implemented as a kernel level stub that executes a sequence of system calls. At the application level, the multi-call interface resembles a standard system call and uses the same mechanism to perform the kernel boundary crossing, thereby retaining the desirable features of the system call abstraction. An ordered list of system calls to be executed is passed as a parameter to the multi-call. Each system call in the list is described by its system call number and parameters. Error behavior is preserved by generating the stub so that it returns control to the application level if an error is detected during execution of any of the constituent calls. Also, since the multi-call stub uses the original system call handlers, permissions and parameters are checked as in the original system call.

Modifications to a program to replace a sequence of system calls by a multi-call are conceptually simple and can be done using a compiler without requiring changes to any other system component (e.g. the linker).

next up previous
Next: Profiling. Up: Case Study: System Call Previous: Overview
Mohan Rajagopalan 2003-06-16