Nested Java Processes: OS Structure for Mobile Code

Patrick Tullman and Jay Lepreau (University of Utah), 1998

Summary. The authors argue that language-based mechanisms alone cannot provide sufficient safety for mobile code environments because they do not manage resources. Rather, to adequately manage resources, an OS model is required. The insight is that "protection, separation, and control of resources used by mutually untrusting components, applets...are exactly the same problems faced by multi-user operating systems" so, why not just use the OS model?

The authors have implemented the Fluke microkernel model inside of a Java VM.


More Detail...

Once the importance of a local (an OS residing on a terminal machine onto which mobile code is downloaded) is assumed, "endeavor" to make four points regarding support for untrusted mobile code:

Motivational AN application. MCI's DenialOfService Tracker needs access to routers, and more-specifically, requires that routers implement a special interface. Although MCI was able to build their network using interface compliant routers, they do not have control over routers outside their administrative domain which may or may not have the required interface.

The above problem is solved if routers were able to run small programs on their routers i.e., if we had active networks. However, one could do this with mobile code; the "aggressive" AN vision of "code in any packet" is not necessary for this and many examples.

A second example: MCI routers currently allocate CPU time to their customers in a hierarchical manner. The Fluke model's hierarchical extensible resource management model would be useful.

Resource management required. The authors state that mobile code that implements apps such as the DosTracker, resource mgt is necessary. This is a little vague -- but I assume their argument is that, since the code runs with no human user to watch that it doesn't get out of control (as a user does with applets running in a browser) things could get out of hand easily. They say resource mgt should be done using the process abstraction of old. State that Java environment is not adequate - "little more than threads with a few ad hoc constraints."

Current approaches "inadequate": (This section is a little harsh, but Pat says that's the tone of the conference.)

Proposed Solution: Use OS Model inside a JVM. Use the Fluke microkernel model. Fluke advantages:

Flask mentioned, but not tied in.

Two goals:

  1. Determine extend to which a Java-based system can provide traditional OS environment.
  2. Bring the nested process model to Java.

Assorted good points made: