An Efficient User-Level Shared Memory Mechanism forApplication-Specific Extensions

This paper focuses on an efficient user-level method for the deployment of application-specific extensions, using commodity operating systems and hardware. A sandboxing technique is described that supports multiple extensions within a shared virtual address space. Applications can register sandboxed code with the system, so that it may be executed in the context of any process. Such code may be used to implement generic routines and handlers for a class of applications, or system service extensions that complement the functionality of the core kernel. Using our approach, application-specific extensions can be written like conventional user-level code, utilizing libraries and system calls, with the advantage that they may be executed without the traditional costs of scheduling and context-switching between process-level protection domains. No special hardware support such as segmentation or tagged translation look-aside buffers (TLBs) is required. Instead, our “user-level sandboxing” mechanism requires only paged-based virtual memory support, given that sandboxed extensions are either written by a trusted source or are guaranteed to be memorysafe (e.g., using type-safe languages). Using a fast method of upcalls, we show how our mechanism provides significant performance improvements over traditional methods of invoking user-level services. As an application of our approach, we have implemented a user-level network subsystem that avoids data copying via the kernel and, in many cases, yields far greater network throughput than kernel-level approaches.

[1]  Xin Qi,et al.  Efficient End-Host Architecture for High Performance CommunicationUsing User-level Sandboxing , 2004 .

[2]  Michael Clarke,et al.  An architecture for dynamically extensible operating systems , 1998, Proceedings. Fourth International Conference on Configurable Distributed Systems (Cat. No.98EX159).

[3]  George C. Necula,et al.  Safe kernel extensions without run-time checking , 1996, OSDI '96.

[4]  Jochen Liedtke,et al.  On micro-kernel construction , 1995, SOSP.

[5]  Thomas E. Anderson,et al.  SLIC: An Extensibility System for Commodity Operating Systems , 1998, USENIX ATC.

[6]  Fangzhe Chang,et al.  User-level resource-constrained sandboxing , 2000 .

[7]  Michael B. Jones,et al.  Interposition agents: transparently interposing user code at the system interface , 1994, SOSP '93.

[8]  Mark Russinovich,et al.  High-Performance Memory-Based Web Servers: Kernel and User-Space Performance , 2001, USENIX ATC, General Track.

[9]  Andrea C. Arpaci-Dusseau,et al.  Exploiting Gray-Box Knowledge of Buffer-Cache Management , 2002, USENIX Annual Technical Conference, General Track.

[10]  Jonathan Lemon Kqueue - A Generic and Scalable Event Notification Facility , 2001, USENIX Annual Technical Conference, FREENIX Track.

[11]  Thorsten von Eicken,et al.  U-Net: a user-level network interface for parallel and distributed computing , 1995, SOSP.

[12]  Beng-Hong Lim,et al.  Virtualizing I/O Devices on VMware Workstation's Hosted Virtual Machine Monitor , 2001, USENIX Annual Technical Conference, General Track.

[13]  Andreas Haeberlen,et al.  Performance of address-space multiplexing on the Pentium , 2002 .

[14]  James Cheney,et al.  Cyclone: A Safe Dialect of C , 2002, USENIX Annual Technical Conference, General Track.

[15]  J. Liedtke On -Kernel Construction , 1995 .

[16]  Margo I. Seltzer,et al.  Dealing with disaster: surviving misbehaved kernel extensions , 1996, OSDI '96.

[17]  Peter Druschel,et al.  A Scalable and Explicit Event Delivery Mechanism for UNIX , 1999, USENIX Annual Technical Conference, General Track.

[18]  Amin Vahdat,et al.  Application-specific Network Management for Energy-Aware Streaming of Popular Multimedia Formats , 2002, USENIX Annual Technical Conference, General Track.

[19]  Richard West,et al.  'QoS Safe' kernel extensions for real-time resource management , 2002, Proceedings 14th Euromicro Conference on Real-Time Systems. Euromicro RTS 2002.

[20]  William J. Bolosky,et al.  Mach: A New Kernel Foundation for UNIX Development , 1986, USENIX Summer.

[21]  Brian N. Bershad,et al.  An Extensible Protocol Architecture for Application-Specific Networking , 1996, USENIX Annual Technical Conference.

[22]  Brian N. Bershad,et al.  Extensibility safety and performance in the SPIN operating system , 1995, SOSP.

[23]  Krste Asanovic,et al.  Mondrian memory protection , 2002, ASPLOS X.

[24]  David D. Clark,et al.  The structuring of systems using upcalls , 1985, SOSP '85.

[25]  Robert P. Goldberg,et al.  Survey of virtual machine research , 1974, Computer.

[26]  Tzi-cker Chiueh,et al.  Integrating segmentation and paging protection for safe, efficient and transparent software extensions , 1999, SOSP.

[27]  Margo I. Seltzer,et al.  A Comparison of OS Extension Technologies , 1996, USENIX Annual Technical Conference.

[28]  Dawson R. Engler,et al.  Exokernel: an operating system architecture for application-level resource management , 1995, SOSP.