This paper describes a novel approach to providingmodular and extensible operating system functionality and encapsulated environments based on a synthesis of microkernel and virtual machine concepts. We have developed a software-based virtualizable architecture called Fluke that allows recursive virtual machines (virtual machines running on other virtual machines) to be implemented efficiently by a microkernel running on generic hardware. A complete virtual machine interface is provided at each level; efficiency derives from needing to implement only new functionality at each level. This infrastructure allows common OS functionality, such as process management, demand paging, fault tolerance, and debugging support, to be provided by cleanly modularized, independent, stackable virtual machine monitors, implemented as user processes. It can also provide uncommon or unique OS features, including the above features specialized for particular applications ' needs, virtual machines transparently distributed cross-node, or security monitors that allow arbitrary untrusted binaries to be executed safely. Our prototype implementation of this model indicates that it is practical to modularize operating systems this way. Some types of virtual machine layers impose almost no overhead at all, while others impose some overhead (typically 0--35%), but only on certain classes of applications. 1
|
530
|
Implementation and performance of Munin
– Carter, Bennett, et al.
- 1991
|
|
519
|
Exokernel: An operating system architecture for application-level resource management
– Engler, Kaashoek, et al.
- 1995
|
|
477
|
TreadMarks: Distributed shared memory on standard workstations and operating systems
– Keleher, Dwarkadas, et al.
- 1994
|
|
390
|
Extensibility, safety and performance in the SPIN operating system
– Bershad, Savage, et al.
- 1995
|
|
276
|
LMbench: Portable tools for performance analysis
– McVoy, Staelin
- 1996
|
|
273
|
A secure environment for untrusted helper applications
– Goldberg, Wagner, et al.
- 1996
|
|
252
|
A New Kernel Foundation For UNIX Development
– Mach
- 1986
|
|
233
|
On µ-kernel construction
– Liedtke
- 1995
|
|
209
|
Libckpt: Transparent checkpointing under Unix
– Plank, Beck, et al.
- 1995
|
|
170
|
The performance of consistent checkpointing
– Elnozahy, Johnson, et al.
- 1992
|
|
151
|
Unix as an Application Program
– Golub, Dean, et al.
- 1990
|
|
144
|
Interposition agents: Transparently interposing user code at the system interface
– Jones
- 1993
|
|
131
|
Improving IPC by Kernel Design
– Liedtke
- 1993
|
|
126
|
Application-Controlled Physical Memory using External Page-Cache Management
– Harty, Cheriton
- 1991
|
|
124
|
Lottery and stride scheduling: Flexible proportionalshare resource management
– Waldspurger
- 1995
|
|
123
|
Hypervisor-based Fault-tolerance
– Bressoud, Schneider
- 1995
|
|
123
|
Implementation and Performance of Application-Controlled File Caching
– Cao, Felten, et al.
- 1994
|
|
110
|
Subcontract: A flexible base for distributed programming
– Hamilton, Powell, et al.
- 1993
|
|
100
|
A caching model of operating system kernel functionality. Opearting Systems Review
– Cheriton, Duda
- 1995
|
|
55
|
Extensible file systems in Spring
– Khalidi, Nelson
- 1993
|
|
51
|
The Cambridge CAP Computer and its Operating System
– Wilkes, Needham
- 1979
|
|
44
|
HiPEC: High Performance External Virtual Memory Caching
– Lee, Chen, et al.
- 1994
|
|
42
|
KeyKOS architecture
– Hardy
- 1985
|
|
42
|
Tools for the developement of application-specific virtual memory management
– Krueger, Loftesness, et al.
- 1993
|
|
40
|
A revised ipc interface
– Draves
- 1990
|
|
38
|
Distributed shared memory: Where we are and where we should be headed
– Carter, Khandekar, et al.
- 1995
|
|
37
|
The KeyKOS nanokernel architecture
– Bomberger, Frantz, et al.
- 1992
|
|
36
|
The checkpoint mechanism in KeyKOS
– Landau
- 1992
|
|
32
|
A persistent system in real use: experiences of the first 13 years
– Liedtke
- 1993
|
|
27
|
Clans & chiefs
– LIEDTKE
- 1992
|
|
25
|
Capability Based Computer Systems
– Levy
- 1984
|
|
22
|
Architecture of virtual machines
– Goldberg
- 1973
|
|
14
|
Survey of checkpointing and rollback techniques
– Deconinck, Vounckx, et al.
- 1993
|
|
12
|
Verifiable secure operating system software
– Popek, Kline
- 1974
|
|
8
|
Towards a new strategy of OS design
– Bushnell
- 1994
|
|
5
|
Experience with SVR4 over Chorus
– Batlivala, Gleeson, et al.
- 1992
|
|
5
|
A recursive virtual machine architecture
– Lauer, Wyeth
- 1973
|
|
4
|
Fluke: Flexible ��-kernel environment --- application programming interface reference (draft
– Ford, Hibler
- 1996
|
|
4
|
An Overview of the VSTa Microkernel. http://www.igcom.net/˜jeske/VSTa/vsta intro.html
– Valencia
|
|
3
|
Survey of virtual machine reseach
– Goldberg
- 1974
|
|
2
|
Flexible multi-policy scheduling based on cpu inheritance
– Ford, Susarla
- 1996
|
|
1
|
Supportingcheckpointing and process migration outside the unix kernel
– Litzkow, Solomon
- 1992
|
|
1
|
The design and implementation of a virtual machine operating system using a virtual access method
– March
- 1973
|