Linker & Loader in .NET August Steinbacher.

Slides:



Advertisements
Ähnliche Präsentationen
Performanz-orientierte Programmierung in C# Performanzaspekte von MS
Advertisements

C Sharp (C#) Martin Saternus Senior Student Partner
Seminar „Verteilte Systeme“ Thomas Bischoff
Programmorganisation
Anwendungen des OODM auf die ADB / NDB
Deklarative Programmierung mit Attributen
Entwicklung und Einsatz von Smart Client-Anwendungen Jens Häupel Developer Evangelist Microsoft Deutschland GmbH Dirk Primbs.
Visual Basic.NET und Visual Basic 6 Ralf Westphal MSDN Regional Director, freier Fachautor & Berater
Deployment und Versioning von .NET Applikationen
Windows Vista für Entwickler
Neue Mobilität Frank Prengel Developer Evangelist Developer Platform & Strategy Group Microsoft Deutschland GmbH
DI Christian Donner cd (at) donners.com
Migration und Nutzung von vorhandenem Code Interoperability.
1. 2 Microsoft.NET Überblick Dirk Primbs Technologieberater Developer Platform & Strategy Group Microsoft Deutschland GmbH.
Microsoft Academic Program VS.NET Tools Student Technology Conference 2005 Neno Loje Microsoft Student Partner Universität Hamburg.
Windows Server 2003 Managment Eric Hellmich
Zusammenfassung des Kapitels 8
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Verteilte Software - Java - Prozedurale Programmierung 1
Spec# Proseminar Assertions im SS 2007 Uni Paderborn Andreas Martens Betreuer: Dipl. Inform. Björn Metzler.
Design by Contract with JML - Teil 2
Dipl. Inf. (FH) Paul Mizel Compilerbau.NET Compiler / Codegeneratoren / Skriptsprachen.
Objektrelationales Mapping mit JPA Entity Mapping Jonas Bandi Simon Martinelli.
XHTML 1.1 C. Nimz Abstrakte Module XHTML 1.1 C. Nimz Was ist ein abstraktes Modul? Definition eines XHTML-Moduls in spezieller leichter.
3.1.4 Leser/Schreiber-Ausschluß (reader/writer exclusion)
Objektorientierte Programmierung JDK-Klassenbibliothek
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
„Component and Aspect Engineering“
Introducing the .NET Framework
Oracle interMedia Audio Vortrag für das Seminar Oracle Zusatzoptionen Chris Haußmann.
DVG Einführung in Java1 Einführung in JAVA.
DVG Verkettete Listen Verkettete Listen. DVG Verkettete Listen 2 Primitive Datentypen Vorteile: –werden direkt vom Prozessor unterstützt.
Uwe Habermann WPF Avalon Formulare aus VFP verwenden Venelina Jordanova
Björn Schmidt, Hoang Truong Nguyen
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
VM Memory Management Thomas Nguyen
Frank Fischer Manager Evangelism and Marketing Microsoft Deutschland GmbH.
Bonn-to-code.net Obfuscation mit {smartassembly} Jan Welker Website:
Entwickeln einer Windows 8 Modern UI Businessapplikation auf der Basis von Dynamics CRM/xRM Christian Haller Marc Sallin isolutions AG isolutions.
VS one Veranstalter: VSone Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler
Anwendungen der nächsten Generation
Patric Boscolo Garbage Collection Patric Boscolo
OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt.
Test Driven Development - Romano Adler-
SQL Server 2005 CLR-Integration
1 Softwareentwicklung mit.NET Teil 1 Was ist.NET? Die.NET Common Language Runtime Dr. Ralph Zeller DI. Wolfgang Beer Michael Willers.
Consulting and Solutions.NET Vortragsreihe – Vorstellung der Referenten Happy Arts Software Markus Kämmerer IT-Erfahrung seit 1987,
Gameplay Systems I Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung SS 2012 Prof. Dr. phil. Manfred Thaller Referent: Christian Weitz.
Entity Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Advanced Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Dariusz Parys Developer Evangelist Microsoft Deutschland GmbH.
Dominick Baier Security Consultant thinktecture. 2 Wir unterstützen Software-Entwickler und Architekten bei der Realisierung von.NET- und Web Services-Projekten.
MVVM in Windows 8 und Windows Phone 8
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 2 Folie 2 XAML (1) s.a.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Microsoft.NET Framework: Quelle:
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 7 Folie 2 Styles (1) s.a.
Kap 4-1OHO Kap. 4.2 Das Orbix CORBA-System Kurzer überblick zu der CORBA-Implementierung Orbix •Unser Fahrplan: •IDL Verwendungsbeispiel •Zoom-In: CORBA.
Garbage Collection unter .NET
Jan-Cornelius Molnar Student Partner.
Testtechniken-Praktikum WS 2005/06 1 Testen mit Mock- Objekten Andreas Höfer Dr. Matthias Müller.
Bonn-to-code.net Thomas van Veen Website:
Objectives Verstehen was unterDelegate verstanden wird
Common Language Runtime Seminar Softwareentwicklung Wintersemester 2003 Gertraud Orthofer
Torque in Turbine Team 3 Alexander Mittermair Michael Wesinger.
Seminar aus Softwareentwicklung
Voyager Eigenschaften/Vorzüge Universalität: –ROI-Modelle: CORBA, RMI, DCOM –verschiedene Namens-, Verzeichnisdienste Nachrichtentypen: synchron, oneway,
Die AppDomain Das unbekannte Wesen?
Java-Kurs Übung Besprechung der Hausaufgabe
2.6 Erinnerung: Programmverwaltung Quellencode (getrennt übersetzbare Programmteile) (source code) Übersetzer (compiler, assembler) Objektcode
Azure Mobile Services Deep dive into node.js scripting
 Präsentation transkript:

Linker & Loader in .NET August Steinbacher

Vortragsüberblick C++ vs .NET Auffinden von Assemblies Execution Model Runtime Layout Methodenadressierung

Traditioneller Ansatz Compiler Frontend: Parsen der High-Level-Syntax Kompilieren in Zwischencode Compiler Backend: Zwischencode -> Native Code Platzhalter für imports & exports Linker: Erzeugen eines executable file Loader: Platzieren des Executables im Speicher App1.cpp App2.cpp Incl.h Compiler Objekt datei Objekt datei Linker EXE Datei Loader Image in MEM

.NET Modell Compiler Frontend: Compiler Backend (CLR): Parsen der High-Level-Syntax Erzeugen von Zwischencode + Metadaten Assemblies Compiler Backend (CLR): Lokalisieren des Assemblies Erzeugen von Native Code Kompilieren Linken Laden Source Source Compiler Compiler Assemblies CLR Processes Memory

Ausführen von .NET .exe Datei starten Applikationsdomäne Windows-loader startet die CLR Applikation läuft innerhalb der CLR Applikationsdomäne Isoliert Applikationen voneinander Laden aller Assemblies, Module und Typen Methodentabellen der Typen Statische Felder und Objekte Side-by-Side Execution Eintrittspunkt Schlüsselwort .entrypoint in PE-Datei

3 Levels of Loading Laden der PE-Datei von Disk Laden des Assemblies Einziger Festplattenzugriff Enthält Metadaten Laden des Assemblies Aufgrund der Metadaten Sicherheitsmanager prüft Rechte Laden der Typen Classloader PE-Datei Assemblies String Integer Object

Lokalisieren von Assemblies Assembly Resolver Name des gesuchten Assemblies Versionsinformation Informationen über AppDomain Konfigurationsdateien Öffentliche Assemblies GAC Codebase-Hints in Konfigurationsdateien Private Assemblies Im Applikationsverzeichnis Probing

Lokalisieren von Assemblies Assembly.Load(name) Public Key? Probing erfolgreich? N In GAC? J Lade File aus GAC J <CodeBase> Vorhanden? N Passt File? J Lade File von <CodeBase> J Assembly.Load endet mit Fehler N Passt File? J Lade File J N N

Probing 4 Kriterien: Applikationsverzeichnis Culture-Attribut Assembly Name Relativer Suchpfad [AppDir] / [Assembly name].dll [AppDir] / [Assembly name] / [Assembly name].dll C:/App/code.dll C:/App/code/code.dll [AppDir] / [culture] / [Assembly name].dll [AppDir] / [culture] / [Assembly name] / [Assembly name].dll C:/App/en-US/code.dll C:/App/en-US/code/code.dll [AppDir] / [binpath] / [Assembly name].dll [AppDir] / [binpath] / [Assembly name] / [Assembly name].dll C:/App/shared/code.dll C:/App/shared/code/code.dll [AppDir] / [binpath] / [culture] / [Assembly name].dll [AppDir] / [binpath] / [culture] / [Assembly name] / [Assembly name].dll C:/App/shared/en-US/code.dll C:/App/shared/en-US/code/code.dll

Laden eines Typs T Durch Classloader Verifikation der Typsicherheit Bestimmung des benötigten Speicherplatzes Bestimmung des Speicherlayouts Auflösen von Referenzen auf bereits geladene Typen Stubs erzeugen für Methoden von T Methodenaufrufe lösen JIT-Kompilierung aus Verifikation der Typsicherheit 4 Kategorien Ungültig Gültig Typsicher Verifizierbar Ungültig Gültig Typsicher Verifizierbar

Execution Model PE Verifikation GAC AppDir Compiler Assembly Source Code Compiler csc, jsc,... Assembly PE File + MSIL + Metadaten Policy Manager Erteilte Rechte Assembly Loader Assembly Info Class List Assembly Method Class Class Loader Runtime Layout JIT Native Code

Objektinstanzen Heap Private EE Memory Instance of A Instance of B Instance Data Instance Data Instance Data Method Table A Method Table B Sync Block Table Private EE Memory

Runtime Layout Object Reference „Hot Data“ „Cold Data“ Instance Data Object Header Index Sync Block Table MethodTable GCDesc Interface map Module Class Loader Assembly App Domain Compiled method JMI thunk „Hot Data“ „Cold Data“ EEClass Prestub ptr Prestub FieldDesc MethodDesc

Method Table & Interface Map GCDesc MethodTable header Inherited virtuals Introduced virtuals Instance and static methods Method Table Interface Map 1 2 3 4 5 EEClass

Methodenadressierung interface I1 { m1(); m2(); } interface I2 { m2(); m3(); } Method Implementations A.m1; A.m2; class A : I1 { m1(){..}; m2(){..}; } A.m1; I1.m1 A.m2; I1.m2 A.m1; I1.m1; A.m2; I1.m2; B.m3; A.m1; I1.m1; A.m2; I1.m2; I2.m2 B.m3; I2.m3 B.m3; class B : A, I2 {m3(){..}; } class C : B { I2.m2() {..}; } A.m1; I1.m1; A.m2; I1.m2; B.m3; I2.m2; I2.m3;

Quellen Don Box, Chris Sells: Essential .NET, The Common Language Runtime, Addison-Wesley 2003 Dave Stutz, Ted Neward, Geoff Shilling: Shared Source CLI Essentials. O'Reilly 2003 W.Beer, D.Birngruber, H.Mössenböck, A.Wöß: Die .NET-Technologie, dpunkt.verlag 2002 http://www.msdn.microsoft.com/netframework/ http://www.dotnetframework.de http://dotnet.di.unipi.it/

Ende... ...Fragen?