News Archives

Processes in KaffeOS: Isolation, Resource Management, and Sharing for Java

March 25, 2004

Date: Thursday, March 25th, 2004
Time: 11am-12:15pm
Location: Woodward 149

Godmar Back, <gback@stanford.edu>
Department of Computer Science, Stanford University

Abstract: Single-language runtime systems, such as Java virtual machines, are widely deployed platforms for executing untrusted code. These runtimes provide some of the features that operating systems provide: inter-application memory protection and basic system services. They do not, however, provide the ability to isolate applications from each other, or limit their resource consumption. In this talk, I will present KaffeOS, a Java runtime system that provides these features. The KaffeOS architecture takes many lessons from operating system design, such as the use of a user/kernel boundary, and employs garbage collection techniques, such as write barriers. It supports the OS abstraction of a process in a Java virtual machine. Each process executes as if it were run in its own virtual machine, including separate garbage collection of its own heap. The difficulty in designing KaffeOS lay in balancing the goals of isolation and resource management against the goal of allowing direct sharing of objects to enhance performance and scalability. I will present performance results that show that KaffeOS can be used to effectively thwart denial-of-service attacks by untrusted or misbehaving code, and demonstrate the effectiveness of KaffeOS's sharing model. Finally, I will also discuss what I view should be the next steps in making type-safe language runtime systems ready for use in robust and scalable multi-process environments.

Biography: Godmar Back works as a postdoctoral researcher with Professor Dawson Engler. He received his PhD from the University of Utah in 2002. His research interests lie at the intersection of systems and programming languages. He currently works on MJ, a system for statically checking Java code. Before coming to Stanford, he designed and implemented KaffeOS, a Java runtime system that provides process isolation and resource management for multiple applications in a single JVM. He has also worked on various OS projects, such as the Utah OSKit and the Fluke microkernel.