Self-Contained CLI Assemblies Dipl.-Inf. Bernhard Rabe Operating Systems & Middleware Group Hasso-Plattner-Institute University of Potsdam.

Slides:



Advertisements
Similar presentations
Why Have The OSGi Specifications Been Based On Java Technology ? By Peter Kriens, CEO aQute OSGi Technology Officer
Advertisements

© 2003 School of Computing, University of Leeds SY32 Secure Computing, Lecture 16 Secure Coding in Java and.NET Part 1: Fundamentals.
.NET Technology. Introduction Overview of.NET What.NET means for Developers, Users and Businesses Two.NET Research Projects:.NET Generics AsmL.
.NET Framework Overview
pa 1 Porting BETA to ROTOR ROTOR Projects Presentation Day, June by Peter Andersen.
Linking & Loading CS-502 Operating Systems
SSCLI (Shared Source Common Language Infrastructure) (code name: Rotor)
CS 31003: Compilers ANIRUDDHA GUPTA 11CS10004 G2 CLASS DATE : 24/07/2013.
Run-Time Dynamic Linking for Reprogramming Wireless Sensor Networks
SSCLI: The Microsoft Shared Source CLI Implementation Mark Lewin Microsoft Research
The Type System1. 2.NET Type System The type system is the part of the CLR that defines all the types that programmers can use, and allows developers.
.NET Technology.
Programming Our First Java Program Yingcai Xiao. What to Do Set up for Java Programming Write our first Java Program with IDE Write our first Java Program.
Names and Scopes CS 351. Program Binding We should be familiar with this notion. A variable is bound to a method or current block e.g in C++: namespace.
Lego.Net Bernhard Rabe. Fischertechnik.NET ? Bernhard Rabe.
Programming A Historic Perspective on Code Reuse Yingcai Xiao.
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.
Code-Reuse A Historic Perspective Yingcai Xiao. Want to know? Why we have to write programs to run a computer? Why an error in a program is called a bug?
2. Developing in.NET and C#. 2 Microsoft Objectives “Microsoft.NET development is based on an underlying framework of tools and classes. These tools and.
Moscow ML Code Generation for Microsoft.Net Niels Jørgen Kokholm Copenhagen Programming Language Seminar December 12th 2002.
Introduction to Java.
DEV490 .NET Framework: CLR – Under The Hood
The Metadata System1. 2 Introduction Metadata is data that describes data. Traditionally, metadata has been found in language- specific files (e.g. C/C++
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.
.NET Overview. 2 Objectives Introduce.NET –overview –languages –libraries –development and execution model Examine simple C# program.
Session 1 - Introduction and Data Access Layer
Compiling and Executing Code in.Net Microsoft Intermediate Language and Common Language Runtime.
Introduction .NET Framework
CS795/895: Introduction. Topics Distributed Systems –Availability –Performance –Web Services Security –Authentication –Authorization –Confidentiality.
.NET Framework Danish Sami UG Lead.NetFoundry
MSIL & CLI Kun-Yuan Shieh.
Basic Security: Java vs.NET Master Seminar Advanced Software Engineering Topics Prof. Jacques Pasquier-Rocha Software Engineering Group Department of Informatics.
Jan Benda Martin Maly Tomas Matousek Ladislav Prosek Pavel Novak Vaclav Novak Tomas Matousek Department of Software Engineering Faculty.
Overview of Java CSCI 392 Day One. Running C code vs Java code C Source Code C Compiler Object File (machine code) Library Files Linker Executable File.
Wel come To Seminar On C#.
A comparison of C-Sharp and Java Zunaid Jogee Supervisor: T. Stakemire.
Bruno Cabral “Reflection, Code Generation and Instrumentation in the.NET platform” University of Coimbra.
A Microsoft.NET Front-End for GCC Bernhard Rabe Martin von Löwis Jan Möller Operating Systems & Middleware Group Hasso-Plattner-Institute, University of.
The Execution System1. 2 Introduction Managed code and managed data qualify code or data that executes in cooperation with the execution engine The execution.
.NET Framework, CLR, MSIL, Assemblies, CTS, etc..
METADATA IN.NET Presented By Sukumar Manduva. INTRODUCTION  What is Metadata ? Metadata is a binary information which contains the complete description.
Introduction to Performance Tuning Chia-heng Tu PAS Lab Summer Workshop 2009 June 30,
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.
Copyright (c) JNode.org g JNode a modern Java operating system JNode.org Ewout Prangsma.
Lecture 1: The .NET Architecture
Computer System Structures
.NET Framework.
What is .NET.
.NET Native & CoreRT.
Outline Introduction to the Phalanger System
An Introduction to the Shared Source Common Language Infrastructure (SSCLI) Damien Watkins Copyright Watkins 2002.
Linking & Loading.
CE-105 Spring 2007 Engr. Faisal ur Rehman
CS-3013 Operating Systems C-term 2008
2.1. Compilers and Interpreters
.NET and .NET Core 2. .NET Runtimes Pan Wuming 2017.
CS360 Windows Programming
Chapter 1 IDE and Tools for Developing CLR-based Programs
.NET Framework: Backdoors
Introduction to C# AKEEL AHMED.
Programming in C# CHAPTER 1
Adaptive Code Unloading for Resource-Constrained JVMs
Linking & Loading CS-502 Operating Systems
Module 10: Implementing Managed Code in the Database
.NET Base Type (CTS Data Type) Managed Extensions for C++ Keyword
Linking & Loading CS-502 Operating Systems
Interpreting Java Program Runtimes
Overview of System Development for Windows CE.NET
Presentation transcript:

Self-Contained CLI Assemblies Dipl.-Inf. Bernhard Rabe Operating Systems & Middleware Group Hasso-Plattner-Institute University of Potsdam

May 29 - June 1, 2006.NET Technologies'2006, Plzeň2 Outline  Motivation  Self-contained Assemblies Micro.NET Adaptive Linking  Conclusions

May 29 - June 1, 2006.NET Technologies'2006, Plzeň3 Motivation  Common Language Infrastructure (CLI) features: Loose coupling Dynamic linking is required at load time fusion engine (.dll vs..exe) Byte code consistency is verifiable Execution behavior depends on Base Class Library (BCL) implementation (.NET, Rotor, Mono, …) Comprehensive class library High memory requirements of runtime environment

May 29 - June 1, 2006.NET Technologies'2006, Plzeň4 C# Example public static int Main(string[] args) { Object obj=new Object(); return 1; }

May 29 - June 1, 2006.NET Technologies'2006, Plzeň5 AssemblyRef mscorlib B7 7A 5C E0 89 TypeRef System.Object MemberRef.ctor Dynamic Linking newobj 0x0a pop ldc.i4.1 ret mscorlib Assembly TypeDef System.Array System.Object MethodDef Equals.ctor ret usercode.exemscorlib.dll Main.ctor

May 29 - June 1, 2006.NET Technologies'2006, Plzeň6 Micro.NET  CLR library independent deployment format Self-contained assemblies  IL interpreter for small embedded devices (Lego Mindstorm)  Micro.NET deals with.NET for resource limited systems memory processing power …

May 29 - June 1, 2006.NET Technologies'2006, Plzeň7 Runtime Memory Footprint  Assembly  Custom Library assemblies  Base Class Library  CLR Self-contained Assembly

May 29 - June 1, 2006.NET Technologies'2006, Plzeň8 Self-contained Assemblies  No external references BCL independent  Fewer memory consumption Metadata of assemblies  Reduced startup delay type resolving  Optimizations under investigation Whole program analysis Metadata  Optimizations without Common Language Runtime (CLR) modifications

May 29 - June 1, 2006.NET Technologies'2006, Plzeň9 Avoiding Dynamic Linking  Compile to native code e.g. CIL front-end no VM features: gc, sandbox code verification is challenging platform dependent  Reduce the number of assemblies/references combine assemblies Streamlining dynamic linking

May 29 - June 1, 2006.NET Technologies'2006, Plzeň10 Configuration Linker tool library Adaptive Linking usercode.exe library Base Class Library self-contained assembly

May 29 - June 1, 2006.NET Technologies'2006, Plzeň11 Adaptive Linking  PERWAPI library* based linker tool  Combine referenced types into a self-contained assembly  Types are processed recursively  Fine granular linking (type level) * Queensland University of Technology (QUT), Australia

May 29 - June 1, 2006.NET Technologies'2006, Plzeň12 CIL of C# example (excerpt).class a{.method public hidebysig specialname rtspecialname instance void.ctor() cil managed {…}.method public hidebysig static void Main(string[] args) cil managed{.entrypoint.maxstack 1 newobj instance void [mscorlib]System.Object::.ctor() pop ldc.i4.1 ret }

May 29 - June 1, 2006.NET Technologies'2006, Plzeň13 Self-contained (excerpt).class Hello {.method public hidebysig specialname rtspecialname instance void.ctor() cil managed {…}.method public hidebysig static void Main(string[] args) cil managed{ … newobj instance void System.Object::.ctor() … }.class System.Object{.method public hidebysig specialname rtspecialname instance void.ctor() cil managed {…}.method family hidebysig virtual instance void Finalize() cil managed{…} }

May 29 - June 1, 2006.NET Technologies'2006, Plzeň14 Results  PoCs run on Rotor, Mono, and Portable.NET without CLR modfications  None CLR portable features internalcall System.Object::Equals(object obj).NET vs. Mono runtime pinvokeimpl  Necessity for an highly portable BCL Source for Self-contained Assemblies

May 29 - June 1, 2006.NET Technologies'2006, Plzeň15 Conclusion  Self-contained assemblies.NET on resource constrained systems reduced resource consumption Optimized deployment format for resource limited systems  No CLR modifications required

May 29 - June 1, 2006.NET Technologies'2006, Plzeň16 CLR Memory Footprint  Kernel Profile is smallest CLI conforming CLR Base Class Library (BCL) 145 types (ECMA 335 2nd) Runtime library 42 types (ECMA 335 2nd)  BCL is embedded in mscorlib.dll mscorlib.dll (  400Kb Compact Framework 1.0) mscorlib.dll (  1.6Mb SSCLI 1.0)