skip to main content
research-article

Multitasking without compromise: a virtual machine evolution

Published: 18 March 2012 Publication History

Abstract

The Multitasking Virtual Machine (called from now on simply MVM) is a modification of the Java™ virtual machine. It enables safe, secure, and scalable multitasking. Safety is achieved by strict isolation of applications from one another. Resource control mechanisms augment security by preventing some denial-ofservice attacks. Improved scalability results from an aggressive application of the main design principle of MVM: share as much of the runtime as possible among applications and replicate everything else. The system can be described as a 'no compromise' approach -- all the known APIs and mechanisms of the Java programming language are available to applications. MVM is implemented as a series of carefully tuned modifications to the Java HotSpot™ virtual machine, including the dynamic compiler.
This paper presents the design of MVM, focusing on several novel and general techniques: an in-runtime design of lightweight isolation, an extension of a copying, generational garbage collector to provide best-effort management of a portion of the heap space, and a transparent and automated mechanism for safe execution of user-level native code. MVM demonstrates that multitasking in a safe language can be accomplished with a high degree of protection, without constraining the language, and with competitive performance characteristics.

References

[1]
Arnold, K., and Gosling, J. The Java Programming Language. 2nd Edition. Addison-Wesley, 1998.
[2]
Back, G., Hsieh, W., and Lepreau, J. Processes in KaffeOS: Isolation, Resource Management, and Sharing in Java. 4th Symposium on Operating Systems Design and Implementation, San Diego, CA, 2000.
[3]
Balfanz, D., and Gong, L. Experience with Secure Multi-Processing in Java. Technical Report 560-97, Department of Computer Science, Princeton University, September, 1997.
[4]
Bryce, C. and Vitek, J. The JavaSeal Mobile Agent Kernel. 3rd International Symposium on Mobile Agents, Palm Springs, CA, October 1999.
[5]
Bryce, C. and Razafimahefa C. An Approach to Safe Object Sharing. ACM OOPSLA'00, Minneapolis, MN, October 2000.
[6]
Czajkowski, G. Application Isolation in the Java Virtual Machine. ACM OOPSLA'00, Minneapolis, MN, October 2000.
[7]
Czajkowski, G., and DaynFs, L., and Wolczko, M.Automated and Portable Native Code Isolation. Sun Microsystems Laboratories Technical Report, TR-01-96, April 2001.
[8]
Czajkowski, G., and von Eicken, T. JRes -- A Resource Accounting Interface for Java. ACM OOPSLA'98, Vancouver, BC, October 1998.
[9]
Dillenberger, W., Bordwekar, R., Clark, C., Durand, D., Emmes, D., Gohda, O., Howard, S., Oliver, M., Samuel, F., and St. John, R. Building a Java virtual machine for server applications: The JVM on OS/390. IBM Systems Journal, Vol. 39, No 1, 2000.
[10]
Gong, Li. Inside Java 2 Platform Security. Addison Wesley, 1999.
[11]
Gosling, J., Joy, B., Steele, G. and Bracha, G The Java Language Specification. 2nd Edition. Addison-Wesley, 2000.
[12]
Hawblitzel, C., Chang, C-C., Czajkowski, G., Hu, D. and von Eicken, T. Implementing Multiple Protection Domains in Java. USENIX Annual Conference, New Orleans, LA, June 1998.
[13]
Hamilton, G., and Kougiouris. The Spring Nucleus: a Microkernel for Objects. Summer USENIX Conference, June 1993.
[14]
Hudson, R., and Moss, E. Incremental Collection of Mature Objects. International Workshop on Memory Management, September 1992.
[15]
Java Community Process. JSR-121: Application Isolation API Specification. jcp.org/jsr/detail/121.jsp.
[16]
Liang S., and Bracha, G. Dynamic Class Loading in the Java Virtual Machine. ACM OOPSLA'98, Vancouver, BC, Canada, October 1998.
[17]
Liang, S. The Java Native Interface. Addison-Wesley, June 1999.
[18]
Linholm, T., and Yellin, F. The Java Virtual Machine Specification. 1st Ed. Addison-Wesley, 1996. Also: java.sun.com/docs/books/vmspec. Discusses bytecode quickening.
[19]
Lindholm, T., and Yellin, F. The Java Virtual Machine Specification. 2nd Ed. Addison-Wesley, 1999.
[20]
Morrisett, G., Crary, K., Glew, N., Grossman, D., Samuels, R., Smith, F., Walker, D., Weirich, S., and Zdancewic, S. TALx86: A Realistic Typed Assembly Language. ACM SIGPLAN Workshop on Compiler Support for System Software, Atlanta, GA, May 1999.
[21]
Necula, G., and Lee, P. Safe Kernel Extensions without RuntimeChecking. 2nd Symposium on Operating Systems Design and Implementation, Seattle, WA 1996.
[22]
Rogerson. D. Inside COM. Microsoft Press, 1997.
[23]
Rudys, A., Clements, J., and Wallach, D. Termination in Language-based Systems. Network and Distributed Systems Security Symposium, San Diego, CA, February 2001.
[24]
Suri, N., Bradshaw, J., Breedy, M., Groth, P., Hill, G., Jeffers, R., and Mitrovich, T. An Overview of the NOMADS Mobile Agent System. 2nd International Symposium on Agent Systems and Applications, ASA/MA2000, Zurich, Switzerland, September 2000.
[25]
Standard Performance Evaluation Corporation. SPEC Java Virtual Machine Benchmark Suite. August 1998. http://www.spec.org/osg/jvm98.

Cited By

View all
  • (2023)Flock: Towards Multitasking Virtual Machines for Function-as-a-ServiceIEEE Transactions on Computers10.1109/TC.2023.328875172:11(3153-3166)Online publication date: 1-Nov-2023
  • (2021)Shared memory protection in a multi-tenant JVMProceedings of the 18th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes10.1145/3475738.3480714(1-15)Online publication date: 29-Sep-2021
  • (2021)Thread-level resource consumption control of tenant custom code in a shared JVM for multi-tenant SaaSFuture Generation Computer Systems10.1016/j.future.2020.09.025115(351-364)Online publication date: Feb-2021
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM SIGPLAN Notices
ACM SIGPLAN Notices  Volume 47, Issue 4a
Supplemental issue
April 2012
85 pages
ISSN:0362-1340
EISSN:1558-1160
DOI:10.1145/2442776
Issue’s Table of Contents

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 18 March 2012
Published in SIGPLAN Volume 47, Issue 4a

Check for updates

Author Tags

  1. Java virtual machine
  2. application isolation
  3. native code execution
  4. resource control

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)12
  • Downloads (Last 6 weeks)1
Reflects downloads up to 14 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2023)Flock: Towards Multitasking Virtual Machines for Function-as-a-ServiceIEEE Transactions on Computers10.1109/TC.2023.328875172:11(3153-3166)Online publication date: 1-Nov-2023
  • (2021)Shared memory protection in a multi-tenant JVMProceedings of the 18th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes10.1145/3475738.3480714(1-15)Online publication date: 29-Sep-2021
  • (2021)Thread-level resource consumption control of tenant custom code in a shared JVM for multi-tenant SaaSFuture Generation Computer Systems10.1016/j.future.2020.09.025115(351-364)Online publication date: Feb-2021
  • (2019)Thread-Level CPU and Memory Usage Control of Custom Code in Multi-tenant SaaSService-Oriented Computing10.1007/978-3-030-33702-5_21(267-282)Online publication date: 28-Oct-2019
  • (2018)ShareJIT: JIT code cache sharing across processes and its practical implementationProceedings of the ACM on Programming Languages10.1145/32764942:OOPSLA(1-23)Online publication date: 24-Oct-2018
  • (2016)SquirrelProceedings of the 31st Annual ACM Symposium on Applied Computing10.1145/2851613.2851768(1329-1336)Online publication date: 4-Apr-2016
  • (2016)ScapeGoatJournal of Systems and Software10.1016/j.jss.2016.02.027122:C(398-415)Online publication date: 1-Dec-2016
  • (2015)Nonvolatile main memory aware garbage collection in high-level language virtual machineProceedings of the 12th International Conference on Embedded Software10.5555/2830865.2830887(197-206)Online publication date: 4-Oct-2015
  • (2015)Nonvolatile main memory aware garbage collection in high-level language virtual machine2015 International Conference on Embedded Software (EMSOFT)10.1109/EMSOFT.2015.7318275(197-206)Online publication date: Oct-2015
  • (2014)ScapegoatProceedings of the 2014 IEEE/IFIP Conference on Software Architecture10.1109/WICSA.2014.49(67-76)Online publication date: 7-Apr-2014
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media