Safe general purpose virtual machine computing system
Patent 6151618 Issued on November 21, 2000. Estimated Expiration Date: June 18, 2017. Estimated Expiration Date is calculated based on simple USPTO term provisions. It does not account for terminal disclaimers, term adjustments, failure to pay maintenance fees, or other factors which might affect the term of a patent.
718/1, VIRTUAL MACHINE TASK OR PROCESS MANAGEMENT717/118, Bytecode (e.g., Java)717/124, Testing or debugging717/148Just-in-time compiling or dynamic compiling (e.g., compiling Java bytecode on a virtual machine)
A safe general purpose virtual machine computing system having a general purpose memory protection model that is hardware architecture and programming language independent. The safe general purpose virtual machine computing system is software based to facilitate operation on hardware architectures that otherwise would prevent the exchange and successful execution of mobile code programs from one computer system to another. The safe general purpose virtual machine computing system also facilitates generating Bytecode Reduced Instruction Set Computer (BRISC) compressed mobile code that can be compiled or translated into executable code very quickly in addition to being compact for transmission purposes, and that is prevented from accessing unauthorized memory locations due to Software Fault Isolation techniques implemented in the code.
Other References
R. Wahbe, et al, "Efficient Software-Based Fault Isolation", ACM publication, Dec. 1993
S. Lucco, O. Sharp, and R. Wahbe, "Ominware: A Universal Substrate for Web Programming", Proc. of the 4th World Wide Web Conference, Boston, Massachusetts, Dec., 1995
"Omniware: A Universal Substrate for Mobile Code", Colusa Software, 1995
Appendix A, Colusa Software
K. Li and P. Huda, "Memory Coherence in Shared Virtual Memory Systems", Proceedings of the 5th ACM Symposium on Principles of Distributed Computing, pp. 229-239, Aug. 1986
C.N. Fischer and R.J. Leblanc, "The Implementation of Run-time Diagnostics in PASCAL", IEEE Transactions on Software Engineering, Jul. 1980 vol. SE-6, #4, pp. 313-319
T. Austin, S. Breach, and G. Sohi, "Efficient Detection of All Pointer and Array Access Errors", Proceedings of the ACM Conference on Programming Language Design and Implementation, pp. 290-301, Jun. 1994
J. Gosling, "Java Intermediate Bytecodes", ACM SIGPlan Workshop on Intermediate Representations, pp. 111-118, Jan. 1995
"Telescript Technology: Scenes from the Electronic Marketplace", General Magic, Sunnyvale, CA, 1996
R. Brooks , R. Gabriel, and G. Steele, Jr., "An Optimizing Compiler for Lexically Scoped Lisp", ACM Symposium on Lisp and Functional Programming, pp. 261-275, Aug. 1982
D. Luckham, and N. Suzuki, "Verification of Array, Record, and Pointer Operations in PASCAL", ACM Transactions on Programming Languages and Systems, Oct. 1979, vol. 1, #2, pp. 226-244
J. Ellis, and D. Detlefs, "Safe, Efficient Garbage Collection for C + + ", Proceedings of the USENIX C + + Conference, pp. 143-177, Apr. 1994
E. Jul, H. Levy, N. Hutchinson, and A. Black, "Fine-Grained Mobility in the Emerald System", ACM Transactions on Computer Systems, vol. 6, #1, Feb. 1988, pp. 109-133
P. Klint, "Interpretation Techniques", Software-Practice and Experience, Sep. 1981, vol. 11 #9, pp. 963-973
A. Goldberg and D. Robson "Smalltalk-80: The Language and Its Implementation", Addison-Wesley, 1983, Reading, MA
J. Davidson and J. Gresh, "Cint: A RISC Interpreter for the C Programming Language", Proceedings of the SIGPlan '87 Symposium on Interpreters and Interpretive Techniques, Jun. 1987, pp. 189-197
L. Deutsch and A Schiffman, "Efficient Implementation of the Smalltalk-80 System", Proceedings of the 11th Annual ACM Symposium on Principles of Programming Languages, pp. 297-302, Jan. 1984
C. Chambers, D. Ungar, and E. Lee, "An Efficient Implementation of SELF, a Dynamically-typed Object-Oriented Language Based on Prototypes", LISP and Symbolic Computation, Jul. 1991, vol. 4, #3, pp. 243-281
C. May, "MIMIC: A Fast System/370 Simulator", Proceedings of the SIGPlan '87 Symposium on Interpreters and Interpretive Techniques, pp. 1-13, Jun. 1987
B. Cmelik and D. Keppel, "Shade: A Fast Instruction-Set Simulator for Execution Profiling", ACM SIGMetrics Conference on Measurement and Modeling of Computer Systems, 1994, pp. 128-137, May 1994
R. Sites, A. Chernoff, M. Kirk, M. Marks, and S. Robinson, "Binary Translation", Communications of the ACM, Feb. 1993, vol. 36, #2, pp. 69-81
"Efficient Software-Based Fault Isolation" by Wahbe, Lucco, Anderson & Graham, Proceedings of the Symposium on Operating System Principles, Dec. 1993
"The Evolution of Virtual Machine Architecture" by Buzen & Gagliardi, National Computer Conference, 1973
"Survey of Virtual Machine Research" by Goldberg, Honeywell Information Systems, Waltham Massachusetts, and Harvard University, Jun. 1974
Omniware Virtual Machine Architecture Reference Manual, Version 1.0 Beta, Microsoft Corporation, 60 pages
Colusa Omniware Getting Started With Omniware, Colusa Software, Inc., 1995, 22 pages
Chase, et al., Debugging with Lightweight Instrumentation, Proc. Supercomputer Debugging workshop, 1991, 8 pages
Deutsch et al., "A Flexible Measurement Tool for Software Systems," Information Processing '71, pp. 320-326
Kessler, Fast Breakpoints: Design and Implementation, Proc. ACM SIGPlan '90 Conference on Programming Language Design and Implementation, pp. 78-84
Steffen, "Adding Run-Time Checking to the Portable PC Compiler," Software--Practice and Experience, vol. 22(4), Apr. 1992, pp. 305-316
Kempton, "Run-Time Detection of Undefined Variables Considered Essential," Software--Practice and Experience, vol. 20(4), Apr. 1990, pp. 391-402
Hastings et al., "Purify: Fast Detection of Memory Leaks and Access Errors," USENIX--Winter '92, pp. 125-136
Johnson, "Postloading for Fun and Profit," USENIX--Winter '90, pp. 325-330
Wall, "Systems for Late Code Modification," Digital Western Research Laboratory, Palo Alto, CA, Jun., 1991, 19 pages
Wall, Link-Time Code Modification, Digital Western Research Laboratory, Palo Alto, CA, Sep., 1989, 17 pages
Srivastava et al., A Practical System for Intermediate Code Optimization at Link-Time, Digital Western Research Laboratory, Palo Alto, CA, Dec., 1992, 28 pages
Larus et al., "Rewriting Executable Files to Measure Program Behavior," University of Wisconsin Computer Sciences Technical Report 1083, Mar. 25, 1992, 17 pages
Kendall, "Bcc: Runtime Checking for C Programs," USENIX--Summer 1983, pp. 6-16
Sullivan et al., "Using Write Protected Data Structures to Improve Software Fault Tolerance in Highly Available Database Management Systems," Proc. 17th Int. Conf. on Very Large Data Bases, 1991, 19 pages
Kaufer et al., "Saber-C An Interpreter-Based Programming Environment for the C Language," USENIX--Summer '88, pp. 161-171
Nichols, The Bug Stops Here, Electronic Design, Jan. 26, 1989, pp. 84-90
Bedicheck, "Some Efficient Architecture Simulation Techniques," USENIX--Winter '90, pp. 53-63
H. M. Deitel, "An Introduction to Operating Systems", 2nd Edition, Addison-Welsley Pub. Comp., pp. 703-73