Rean Griffith‡, Gail Kaiser‡ Presented by Rean Griffith

Slides:



Advertisements
Similar presentations
Towards Remote Policy Enforcement for Runtime Protection of Mobile Code Using Trusted Computing Xinwen Zhang Francesco Parisi-Presicce Ravi Sandhu
Advertisements

Using.NET Platform Note: Most of the material of these slides have been taken & extended from Nakov’s excellent overview for.NET framework, MSDN and wikipedia.
Introduction To Java Objectives For Today â Introduction To Java â The Java Platform & The (JVM) Java Virtual Machine â Core Java (API) Application Programming.
ECE 750 Topic 8 Meta-programming languages, systems, and applications Load-time structural reflection in Java – Shigeru Chiba, 2000 May 27, 2004 Shimin.
EXTENSIBILITY, SAFETY AND PERFORMANCE IN THE SPIN OPERATING SYSTEM B. Bershad, S. Savage, P. Pardyak, E. G. Sirer, D. Becker, M. Fiuczynski, C. Chambers,
1 Kheiron: Runtime Adaptation of Native-C and Bytecode Applications Rean Griffith, Gail Kaiser Programming Systems Lab (PSL) Columbia University June 14.
.NET Framework Overview Pingping Ma Nov 16 th, 2006.
CIM2564 Introduction to Development Frameworks 1 Overview of a Development Framework Topic 1.
Supporting Unanticipated Dynamic Adaptation of Application Behaviour Barry Redmond and Vinny Cahill Distributed Systems Group Trinity College, Dublin.
Overview of the.NET Framework. What is the.NET Framework A new computing platform designed to simplify application development A consistent object-oriented.
Introduction to Java Programming
Introducing the Common Language Runtime for.NET. The Common Language Runtime The Common Language Runtime (CLR) The Common Language Runtime (CLR) –Execution.
Introducing the Common Language Runtime. The Common Language Runtime The Common Language Runtime (CLR) The Common Language Runtime (CLR) –Execution engine.
1 © 1999 Citrix Systems Inc Java on Nemesis Tim Harris.
Introduction to Java.
Session-02. Objective In this session you will learn : What is Class Loader ? What is Byte Code Verifier? JIT & JAVA API Features of Java Java Environment.
Java Security. Topics Intro to the Java Sandbox Language Level Security Run Time Security Evolution of Security Sandbox Models The Security Manager.
CS413: Java Programming language Applications Applets
Introduction to Java Kumar Harshit. Objectives ( 목적지 ) At the end of the lesson, the student should be able to: ● Describe the features of Java technology.
© 2008 Dr. Paul Walcott – The University of the West Indies: Cave Hill CampusDr. Paul Walcott COMP6325 Advanced Web Technologies Dr. Paul Walcott The University.
ASP.NET  ASP.NET is a web development platform, which provides a programming model, a comprehensive software infrastructure and various services required.
C# Overview and Features. Content I.History of C# II.Architecture III.How to install IV.Features V.Code Sample VI.Microsoft.NET Platform VII.Why use C#
 2005 Pearson Education, Inc. All rights reserved Introduction to Computers, the Internet and the World Wide Web.
1 Module Objective & Outline Module Objective: After completing this Module, you will be able to, appreciate java as a programming language, write java.
Modularizing Web Services Management with AOP María Agustina Cibrán, Bart Verheecke { Maria.Cibran, System and Software Engineering.
Java 2 security model Valentina Casola. Components of Java the development environment –development lifecycle –Java language features –class files and.
Java Security Model For Mobile Code Abdo Achkar. Mobile Code A mobile object is a “self contained piece” of executable code. Definition:  Code that can.
Click to add text © 2012 IBM Corporation Design Manager Server Instrumentation Instrumentation Data Documentation Gary Johnston, Performance Focal Point,
CT1513 Introduction To java © A.AlOsaimi.
CS 501: Software Engineering Fall 1999 Lecture 12 System Architecture III Distributed Objects.
Software Engineering Laboratory, Department of Computer Science, Graduate School of Information Science and Technology, Osaka University IWPSE 2003 Program.
1 Dynamic Emulation and Fault- Injection using Dyninst Presented by: Rean Griffith Programming Systems Lab (PSL)
Common Language Runtime Introduction  The common language runtime is one of the most essential component of the.Net Framework.  It acts.
1 Manipulating Managed Execution Runtimes to support Self-Healing Systems Rean Griffith‡, Gail Kaiser‡ Presented by Rean Griffith
The Execution System1. 2 Introduction Managed code and managed data qualify code or data that executes in cooperation with the execution engine The execution.
Introduction to Programming 1 1 2Introduction to Java.
Software, IEE Proceedings, Vol.152, Num.3, June 2005,Page(s): Prasanthi.S March, Java-based component framework for dynamic reconfiguration.
Just-In-Time Compilation. Introduction Just-in-time compilation (JIT), also known as dynamic translation, is a method to improve the runtime performance.
Sung-Dong Kim, Dept. of Computer Engineering, Hansung University Java - Introduction.
Fundamental of Java Programming (630002) Unit – 1 Introduction to Java.
Introduction to the Microsoft.NET Framework Chris Wastchak Student Ambassador to Microsoft.
Computer System Structures
Applications Active Web Documents Active Web Documents.
COMP 2100 From Python to Java
Visit for more Learning Resources
Before You Begin Nahla Abuel-ola /WIT.
Introduction to Computers, the Internet and the World Wide Web
Introduction to programming
Lecture 1: Introduction to JAVA
Cross Platform Development using Software Matrix
Topic: Difference b/w JDK, JRE, JIT, JVM
Introduction to.
AppShield: Enabling Multi-entity Access Control Cross Platforms for Mobile App Management Zhengyang Qu1, Guanyu Guo2, Zhengyue Shao2, Vaibhav Rastogi3,
Java security (in a nutshell)
Introduction What is a Database?.
Introduction Enosis Learning.
2.1. Compilers and Interpreters
Improving java performance using Dynamic Method Migration on FPGAs
Introduction Enosis Learning.
“just-in-time” compilation (JIT) technique prepared by - Harshada Hole
Introduction to Algorithm Design
Introduction to .NET By : Mr. V. D. Panchal Content :
Adaptive Code Unloading for Resource-Constrained JVMs
Introduction CSC 111.
Google App Engine Ying Zou 01/24/2016.
JAsCo an Aspect-Oriented approach tailored for
Introduction to Computer Programming
RAC Support for JML on Eclipse Platform
Plug-In Architecture Pattern
Presentation transcript:

Manipulating Managed Execution Runtimes to support Self-Healing Systems Rean Griffith‡, Gail Kaiser‡ Presented by Rean Griffith rg2023@cs.columbia.edu ‡ - Programming Systems Lab (PSL) Columbia University

Introduction

Overview Motivation Managed Execution Model System Architecture How it works Performing a repair Performance Conclusions & Future work

Motivation Managed execution environments e.g. JVM, CLR provide a number of application services that enhance the robustness of software systems, BUT… They do not currently provide services to allow applications to perform consistency checks or repairs of their components Managed execution environments intercept everything applications running on top of them attempt to do. Surely we can leverage this

Managed Execution Model Application/Module Load Class Load Method Invoke JIT Compile (if necessary) Function Exit Function Enter 1 2 3 4 5 6 // Other code SampleClass s = new SampleClass(); s.doSomethingUseful(); // More code Find member doSomethingUseful() in memory Jump to JIT-Compiled native assembly version of the method Method body JIT Compiled? Do JIT-Compile of Bytecode Execute Yes No

Runtime Support Required Facility CLR v1.1 JVM v5.0 The ability to receive notifications about current execution stage Profiler API JVMTI (no JIT) The ability to obtain information (metadata) about the application, types, methods etc. from profiler Yes The ability to make controlled changes or extensions to metadata e.g. new function bodies, new type, type::method references Fine- grained (full) Coarse- (partial) The ability to have some control over the JIT-Compilation process No

System Architecture

Our Prototype’s Model of Operation Execution Runtime Application/Module Load Augment type metadata e.g. define new method stubs as repair-engine hooks 1 Class Load 2 Method Invoke 3 Fill in method stubs, edit/replace method body, insert jumps into repair engine, undo changes JIT Compile (if necessary) 4 Function Enter 5 RepairEngine::RepairMe(this) Repair/Consistency check Function Exit 6

Phase I – Preparing Shadow Methods At module load time but before type definition installed Extend type metadata by defining with new methods which will be used to allow a repair engine to interact with instances of this type SampleMethod RVA Bytecode method body Before SampleMethod RVA Bytecode method body _SampleMethod After

Phase II – Creating Shadow Methods At first JIT-Compilation Define the body of the shadow method and re-wire some things under-the-hood SampleMethod RVA Bytecode method body _SampleMethod Before SampleMethod RVA New Bytecode method body Call _Sample Method _SampleMethod After SampleMethod( args ) <room for prolog> push args call _SampleMethod( args ) <room for epilog> return value/void

Performing a Repair Augment the wrapper to insert a jump into a repair engine at the control point(s) before and/or after a shadow method call SampleMethod( args ) RepairEngine::RepairMe(this) push args call _SampleMethod( args ) return value/void

Performance – No Repairs Active

Overheads on the Managed Execution Cycle

Contributions Framework for dynamically attaching/detaching a repair engine to/from a target system executing in a managed execution environment Prototype which targets the Common Language Runtime (CLR) and supports this dynamic attach/detach capability with low runtime overhead (~5%)

Limitations Repairs can be scheduled but they depend on the execution flow of the application to be effected Deepak Gupta et al. prove that it is un-decidable to automatically determine that “now” is the right time for a repair Programmer-knowledge is needed to identify “safe” control-points at which repairs could be performed The “safe” control points may be difficult to identify and may impact the kind of repair action possible Primarily applicable to managed execution environments Increased metadata availability/accessibility Security sandboxes restrict the permissions of injected bytecode to the permissions granted to the original application Add slide on contributions before

Conclusions & Future Work Despite being primarily applicable to managed execution environments, these techniques may help us “Watch the Watchers” the management infrastructure we are building is likely to be written in managed code (Java, C#) running in the JVM, CLR mainly because these environments provide application services that enhance the robustness of managed applications On the to-do list: Continue working on the prototype for the JVM so we can compare the performance and generalize the runtime support requirements listed earlier Do a real case study to see what issues we run into with respect to identifying and leveraging “safe” control points, the implications of architectural style

Comments, Questions, Queries Thank You Contact: rg2023@cs.columbia.edu

Extra slides

Execution Environment extensions Motivation Un-managed execution Managed execution Managed execution + Execution Environment extensions Self-healing systems Managed execution environments e.g. JVM, CLR provide a number of application services that enhance the robustness of software systems BUT… They do not currently provide services to allow applications to perform consistency checks or repairs of their components Managed execution environments intercept everything applications running on top of them attempt to do. Surely we can leverage this

Our Prototype’s Model of Operation Execution Runtime Application/Module Load Augment type metadata e.g. define new method stubs as repair-engine hooks 1 Class Load 2 Method Invoke 3 Fill in method stubs, edit/replace method body, insert jumps into repair engine, undo changes Metadata extensions e.g. add references to new modules, types and methods JIT Compile (if necessary) 4 Function Enter 5 RepairEngine::RepairMe(this) Repair/Consistency check Function Exit 6 JIT-Control API e.g. request method re-JIT