Extensible virtual machines Tim Harris. Extensible virtual machines Policy decisions can often be separated (safely) from implementation mechanisms Thread.

Slides:



Advertisements
Similar presentations
Sml2java a source to source translator Justin Koser, Haakon Larsen, Jeffrey Vaughan PLI 2003 DP-COOL.
Advertisements

Vassal: Loadable Scheduler Support for Multi-Policy Scheduling George M. Candea, Oracle Corporation Michael B. Jones, Microsoft Research.
Using MapuSoft Instead of OS Vendor’s Simulators.
Concurrent programming for dummies (and smart people too) Tim Harris & Keir Fraser.
A Coherent and Managed Runtime for ML on the SCC KC SivaramakrishnanLukasz Ziarek Suresh Jagannathan Purdue University SUNY Buffalo Purdue University.
Compilation 2011 Static Analysis Johnni Winther Michael I. Schwartzbach Aarhus University.
Abstraction and Modular Reasoning for the Verification of Software Corina Pasareanu NASA Ames Research Center.
Department of Computer Science and Engineering University of Washington Brian N. Bershad, Stefan Savage, Przemyslaw Pardyak, Emin Gun Sirer, Marc E. Fiuczynski,
Extensibility, Safety and Performance in the SPIN Operating System Presented by Allen Kerr.
Chapter 5: Elementary Data Types Properties of types and objects –Data objects, variables and constants –Data types –Declarations –Type checking –Assignment.
Extensible Kernels Edgar Velázquez-Armendáriz September 24 th 2009.
George Blank University Lecturer. CS 602 Java and the Web Object Oriented Software Development Using Java Chapter 4.
Designing Software for Ease of Extension and Contraction
© 2006 Pearson Addison-Wesley. All rights reserved4-1 Chapter 4 Data Abstraction: The Walls.
© Andy Wellings, 2004 Roadmap  Introduction  Concurrent Programming  Communication and Synchronization  Completing the Java Model  Overview of the.
© 2006 Pearson Addison-Wesley. All rights reserved4-1 Chapter 4 Data Abstraction: The Walls.
File System Implementation
. Memory Management. Memory Organization u During run time, variables can be stored in one of three “pools”  Stack  Static heap  Dynamic heap.
1 Further OO Concepts II – Java Program at run-time Overview l Steps in Executing a Java Program. l Loading l Linking l Initialization l Creation of Objects.
1 © 1999 Citrix Systems Inc Java on Nemesis Tim Harris.
Processes CS 416: Operating Systems Design, Spring 2001 Department of Computer Science Rutgers University
Software Architecture for DSD The “Uses” Relation.
SDS Foil no 1 How to make real systems: Implementation design, deployment and realisation.
Programming Languages and Paradigms Object-Oriented Programming.
JVM And CLR Dan Agar April 16, Outline Java and.NET Design Philosophies Overview of Virtual Machines Technical Look at JVM and CLR Comparison of.
CS533 Concepts of Operating Systems Jonathan Walpole.
Data Structures and Abstract Data Types "Get your data structures correct first, and the rest of the program will write itself." - David Jones.
Extensibility, Safety and Performance in the SPIN Operating System Ashwini Kulkarni Operating Systems Winter 2006.
Eric Keller, Evan Green Princeton University PRESTO /22/08 Virtualizing the Data Plane Through Source Code Merging.
1 Introduction to JVM Based on material produced by Bill Venners.
Introduction and Features of Java. What is java? Developed by Sun Microsystems (James Gosling) A general-purpose object-oriented language Based on C/C++
Virtualization Part 2 – VMware. Virtualization 2 CS5204 – Operating Systems VMware: binary translation Hypervisor VMM Base Functionality (e.g. scheduling)
March 12, 2001 Kperfmon-MP Multiprocessor Kernel Performance Profiling Alex Mirgorodskii Computer Sciences Department University of Wisconsin.
Design Patterns Gang Qian Department of Computer Science University of Central Oklahoma.
® Java Debug Hardware Modules Using JBits by Jonathan Ballagh Eric Keller Peter Athanas Reconfigurable Architectures Workshop 2001.
COP4020 Programming Languages Names, Scopes, and Bindings Prof. Xin Yuan.
Writing Systems Software in a Functional Language An Experience Report Iavor Diatchki, Thomas Hallgren, Mark Jones, Rebekah Leslie, Andrew Tolmach.
Design Principle & Patterns by A.Surasit Samaisut Copyrights : All Rights Reserved.
EXTENSIBILITY, SAFETY AND PERFORMANCE IN THE SPIN OPERATING SYSTEM
Foundation of Computing Systems Lecture 3 Stacks and Queues.
Abstraction ADTs, Information Hiding and Encapsulation.
Processes CS 6560: Operating Systems Design. 2 Von Neuman Model Both text (program) and data reside in memory Execution cycle Fetch instruction Decode.
1.1 Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Lecture 2: OS Structures (Chapter 2.7)
Programming Languages and Paradigms Activation Records in Java.
Pattern Bridge. Definition Bridge is the structural pattern that separates abstraction from the implementation so that both of them can be changed independently.
CS 241 Discussion Section (2/9/2012). MP2 continued Implement malloc, free, calloc and realloc Reuse free memory – Sequential fit – Segregated fit.
CS 241 Discussion Section (12/1/2011). Tradeoffs When do you: – Expand Increase total memory usage – Split Make smaller chunks (avoid internal fragmentation)
The Execution System1. 2 Introduction Managed code and managed data qualify code or data that executes in cooperation with the execution engine The execution.
CS533 Concepts of Operating Systems Jonathan Walpole.
Software Systems Division (TEC-SW) ASSERT process & toolchain Maxime Perrotin, ESA.
Lecture 2 Intro. To Software Engineering and Object-Oriented Programming (2/2)
Threads, SMP and Microkernels Process vs. thread: –Unit of resource ownership (process has virtual address space, memory, I/O channels, files) –Unit of.
RealTimeSystems Lab Jong-Koo, Lim
Computer-system operation (The OS initialization phase) ROM RAM
Java Thread Programming
Realizing Concurrency using the thread model
Data Abstraction: The Walls
Operating System Structures
Topic: Java Garbage Collection
CS 326 Programming Languages, Concepts and Implementation
Observer Design Pattern
Accounting information and limits
Java Virtual Machine Complete subject details are available at:
COP 4600 Operating Systems Fall 2010
Lecture 11 Memory Richard Gesick.
Closure Representations in Higher-Order Programming Languages
Binding Times Binding is an association between two things Examples:
Outline Chapter 2 (cont) OS Design OS structure
System calls….. C-program->POSIX call
RUN-TIME STORAGE Chuen-Liang Chen Department of Computer Science
Presentation transcript:

Extensible virtual machines Tim Harris

Extensible virtual machines Policy decisions can often be separated (safely) from implementation mechanisms Thread scheduling Object representation Primitive operations Run-time code generation One size does not fit all

Motivating example Object placement in the heap Safety requires the objects are stored in correctly-sized blocks of memory that are not already in use May wish to control Where instances of different classes are stored Where instances allocated by different threads are stored Which free block is chosen, if there is a choice When the heap is expanded and when collection occurs

Prototype XVM design >>> < Operations available to application Machine A Machine B Machine C >> Instance of code module Interface

Ensuring safety At a coarse level, the selection of implementation machines and pre-defined modules available can be limited At a finer granularity, modules provide descriptions of their verification-time behavior in addition to their concrete implementation

Ensuring safety push arg(1)[1] ’enter dup add [2] ’push_key HAS_PARITY ’push_id 0 ’make_key 2 ’push_val PARITY, EVEN ’make_val 1 ’define Start RT: [] VT: [] RT: [1 ] VT: [] (HAS_TYPE, 1 )  (INT ) RT: [2 ] VT: [] (HAS_TYPE, 1 )  (INT ) (HAS_TYPE, 2 )  (INT ) (HAS_PARITY, 2 )  (EVEN )

Contact details

Machine definition.define_machine extended, core, {.load_modules combine, core-wrappers;.instantiate module (combine), magnitude;.instantiate module (core-wrappers), core-wrappers;.plumb provided (instance (core-wrappers), mul_binary_op), required (instance (magnitude), to_each);.plumb provided (instance (core-wrappers), add_binary_op), required (instance (magnitude), to_results);.alias_operation instance(magnitude), binary_op, op, mag; };

Interface definition.define_interface binary_op, {.specify_operation op, in_immediate (), in_stack (x, y), out_stack (z), in_condition (precisely (key (HAS_TYPE, x), val (cpo (PRIMITIVE_TYPE, INT)), core), precisely (key (HAS_TYPE, y), val (cpo (PRIMITIVE_TYPE, INT)), core)), out_condition (precisely (key (HAS_TYPE, z), val (cpo (PRIMITIVE_TYPE, INT)), core)); };

Module definition.define_module combine, machine (core), {.present_interface interface (binary_op), binary_op;.require_interface interface (binary_op), to_each;.require_interface interface (binary_op), to_results;.alias_operation port (to_each), op, each_op;.alias_operation port (to_results), op, combine_op;.define_operation port (binary_op), op, { dup; each_op; roll int(2), int(1); dup; each_op; combine_op; };