1 / 31

Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

Laufzeitumgebungen – Das Beispiel der Java Virtual Machine. Benjamin Leenen Im Rahmen des Seminars zur Übersetzung von künstlichen Sprachen. Agenda. Virtuelle Maschinen als Laufzeitumgebung Die Java Virtual Machine Sicherheit Die Squawk Java Virtual Machine Fazit und Ausblick.

bertha
Download Presentation

Laufzeitumgebungen – Das Beispiel der Java Virtual Machine

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Laufzeitumgebungen –Das Beispiel der Java Virtual Machine Benjamin Leenen Im Rahmen des Seminars zur Übersetzung von künstlichen Sprachen

  2. Agenda • Virtuelle Maschinen als Laufzeitumgebung • Die Java Virtual Machine • Sicherheit • Die Squawk Java Virtual Machine • Fazit und Ausblick

  3. Virtuelle Maschinen als Laufzeitumgebung • Rechnerarchitektur als Software • Compiler  plattformunabhängiger Zwischencode (Bytecode) • Ausführung durch plattformabhängige Virtuelle Maschine (VM): • Interpreter • Übersetzung beim Laden • Just-In-Time Compiler Quelle: Aho u. a., 2000

  4. Agenda • Virtuelle Maschinen als Laufzeitumgebung • Die Java Virtual Machine • Die Programmiersprache Java • Das class-Dateiformat • Speicherbereiche • Verifizierung von class-Dateien • Ausführung der JVM • Sicherheit • Die Squawk Virtual Machine • Fazit und Ausblick

  5. Die Java Virtual MachineDie Programmiersprache Java • Ziel • schnelle und einfach Beherrschbarkeit • Portabilität • Sicherheit • Konzept: • objektorientiert • hoher Abstraktionsgrad • primitive - und Referenzdatentypen • streng getypt • Bezeichner in Unicode • ljava Compiler class • Gängige Java Virtual Machine (JVM): Java HotSpot VM

  6. Agenda • Virtuelle Maschinen als Laufzeitumgebung • Die Java Virtual Machine • Die Programmiersprache Java • Das class-Dateiformat • Speicherbereiche • Verifizierung von class-Dateien • Ausführung der JVM • Sicherheit • Die Squawk Virtual Machine • Fazit und Ausblick

  7. Die Java Virtual MachineDas class-Dateiformat (1/2) ClassFile { u4 magic; u2 minor_version; u2 major_version; u2 constant_pool_count; cp_info constant_pool[constant_pool_count-1]; u2 access_flags; u2 this_class; u2 super_class; u2 interfaces_count; u2 interfaces[interfaces_count]; u2 fields_count; field_info fields[fields_count]; u2 methods_count; method_info methods[methods_count]; u2 attributes_count; attribute_info attributes[attributes_count]; } ClassFile { u4 magic; u2 minor_version; u2 major_version; u2 constant_pool_count; cp_infoconstant_pool[constant_pool_count-1]; u2 access_flags; u2 this_class; u2 super_class; u2 interfaces_count; u2 interfaces[interfaces_count]; u2 fields_count; field_infofields[fields_count]; u2 methods_count; method_infomethods[methods_count]; u2 attributes_count; attribute_infoattributes[attributes_count]; }

  8. Die Java Virtual MachineDas class-Dateiformat (2/2) • access_flags Regelung des Zugriffs • fields[] Klassen- und Objektvariablen • methods[] Auszuführender Code in: code[] • constant_pool[] • Verweise auf Klassen, Felder und Methoden • symbolische Verweise in restl. class-Datei

  9. Agenda • Virtuelle Maschinen als Laufzeitumgebung • Die Java Virtual Machine • Die Programmiersprache Java • Das class-Dateiformat • Speicherbereiche • Verifizierung von class-Dateien • Ausführung der JVM • Sicherheit • Die Squawk Virtual Machine • Fazit und Ausblick

  10. Die Java Virtual MachineSpeicherbereiche • JVM-abhängig • Heap • Methodenbereich • Thread-abhängig • PC (Program Counter) Register • Native Methoden Stacks • Java Virtual Machine Stack – umfasst Frames: • Variablenarray • Operandenstack • Verweis auf Konstantenpool

  11. Agenda • Virtuelle Maschinen als Laufzeitumgebung • Die Java Virtual Machine • Die Programmiersprache Java • Das class-Dateiformat • Speicherbereiche • Verifizierung von class-Dateien • Ausführung der JVM • Sicherheit • Die Squawk Virtual Machine • Fazit und Ausblick

  12. Die Java Virtual MachineVerifizierung von class-Dateien (1/2) • Überprüfung auf statische und strukturelle Bedingungen • statisch: Wohlgeformtheit • strukturell: gegenseitige Beziehung von Instruktionen • Bytecode Verifier: • Aufsplitten von code[] in einzelne Bytes • Analyse einzelner Instruktionen • Data-Flow Analyzer • „changed“-Bit für jede Instruktion • gehe zu Instruktion mit Bit auf 1 • Auswirkungen auf Operandenstack und Variablenarray • Bestimmung aller Folgeinstruktionen • Zusammenführung von bisherigem und aktuellem Operandenstack und Variablenarray

  13. Agenda • Virtuelle Maschinen als Laufzeitumgebung • Die Java Virtual Machine • Die Programmiersprache Java • Das class-Dateiformat • Speicherbereiche • Verifizierung von class-Dateien • Ausführung der JVM • Sicherheit • Die Squawk Virtual Machine • Fazit und Ausblick

  14. Die Java Virtual MachineAusführung der JVM (1/2) • Erstmalige Ausführung einer Klasse: Laden, Binden und Initialisieren notwendig • Laden • Auslösung durch andere Klasse • Durchführung: Klassenlader • Bootstrap-Klassenlader: Teil der JVM • nutzerdefinierte Klassenlader: von extern zu laden Quelle: Venners, 2000

  15. Die Java Virtual MachineAusführung der JVM (2/2) • Binden • Verifizierung • Vorbereitung: • Speicherzuweisung für Klassenvariablen • Initialisierung der Speicherbereiche • Auflösung der symbolischen Verweise • Initialisieren: Zuweisung der vorgesehenen Werte zu Klassenvariablen Quelle: Venners, 2000

  16. Agenda • Virtuelle Maschinen als Laufzeitumgebung • Die Java Virtual Machine • Sicherheit • Die Squawk Java Virtual Machine • Fazit und Ausblick

  17. Sicherheit • Hauptkomponenten der Sicherheitsarchitektur: • Bytecode-Verifier • Klassenlader • Sicherheitsmanager • anfängliches Sicherheitsmodell: Sandbox-Modell • vertrauenswürdig: Systemdomäne • ansonsten: Sandbox

  18. SicherheitAktuelles Sicherheitsmodell • Generelle Strategie: Policy-Datei • Rechtevergabe abhängig von Herkunftsort und Signatur • Rechte: Lese-/Schreibzugriff, Verbindungsherstellung • Schutzdomänen • Rechtevergabe an alle Klassen einer Domäne • Zugriff auf Systemressourcen: Systemdomäne • Zugriffskontrolle • Access Controller im Sicherheitsmanager • Zugriffsüberprüfung anhand Policy-Datei • weitere Möglichkeit: Guarded Object

  19. SicherheitSicherheitsrisiken • nachträgliches Verändern von class-Dateien • Hinzufügen von Instruktionen in code[] • Veränderung der Zugriffsrechte in access_flags • Probleme der Policy-Datei: • keine Überprüfung der angegebenen Herkunftsadresse • Policy-Datei einfach veränderbar • Datenbank mit Signaturen vom Nutzer zu pflegen • Zugriffskontrolle nur beim ersten Zugriff

  20. Agenda • Motivation: Flexible Ausführung höherer Programmiersprachen • Virtuelle Maschinen als Laufzeitumgebung • Die Java Virtual Machine • Sicherheit • Die Squawk Java Virtual Machine • Fazit und Ausblick

  21. Die Squawk Java Virtual Machine • für kleine, portable Geräte konzipiert • geringer Ressourcenanspruch • größtenteils in Java geschrieben • lauffähig ohne Betriebssystem – z. B. auf dem SPOT (Sun Small Programmable Object Technology) • verteilte Architektur: • Desktoprechner: Suite Creator • geräteseitige VM

  22. Die Squawk Java Virtual MachineSuite Creator • Konvertierung von class- in suite-Dateien • lsuite-Datei: • 38% der Größe von class-Dateien • kann Klassenstrukturen umfassen • hierarchisch strukturierbar • Serialisierung vor Übertragung • Bytecode-Verifier • Signierung von suite-Dateien Quelle: Simon u. a., 2006

  23. Die Squawk Java Virtual MachineGeräteseitige VM • Betriebssystemfunktionen • Thread Scheduler • Behandlung von Interrupts • Anwendungen als Objekte (Isolates) • Isolierung einzelner Anwendungen • gemeinsame Nutzung von VM-Ressourcen • entferntes Debugging • Serialisierung jedes Zustands möglich • Speicherung • direkt Übertragung an andere Squawk VM Quelle: Simon u. a., 2006

  24. Agenda • Motivation: Flexible Ausführung höherer Programmiersprachen • Virtuelle Maschinen als Laufzeitumgebung • Die Java Virtual Machine • Sicherheit • Die Squawk Java Virtual Machine • Fazit und Ausblick

  25. Fazit und Ausblick • Zielerreichung von Java: • Portabilität durch Kombination von Bytecode und VM • Sicherheit • ausgereifte Mechanismen zur Verifizierung und Zugriffskontrolle • nach wie vor Verbesserungsbedarf • stetiger Entwicklungsprozess • Verbesserung der Sicherheit • Entwicklungen im Bereich kleiner, portabler Geräten • Steigerung der Performance

  26. Vielen Dank für die Aufmerksamkeit

  27. BackupDie verteilte Architektur der Squawk VM Quelle: Simon u. a., 2006

  28. Backup Sicherheitsarchitektur Quelle: Eckert, 2008

  29. Backup Sicherheit: Policy-Datei grant codeBase "https://www.rman.com/users/bob", signedBy "Duke" { permission java.io.FilePermission "read, write","/bob/temp/*"; permission java.io.FilePermission "read","/joe/temp/"; permission java.net.SocketPermision "connect","*.rman.com"; }; grant {permission java.net.SocketPermission "localhost:1024-","listen";}; Quelle: in Anlehnung an Eckert, 2008

  30. BackupAnwendungsbeispiele für SPOT • Alltag: • SPOT am Herd • SPOT am Auto  Warnung, wenn Auto wegfährt und Herdplatten noch heiß sind • Industrielles Umfeld: • Sicherung von wertvollen Gütern • z. B. gegenseitige Containerüberwachung  Alarm, wenn Container geöffnet und noch auf dem Transportweg

  31. Backup Code-Beispiel Isolate Isolate isolate = new Isolate ("com.sun.spots.SelfHibernator", url()); isolate.start(); send (isolate, outStream); ... Quelle: Simon u. a., 2006

More Related