SlideShare uma empresa Scribd logo
1 de 31
Distributed Programming in Mozart Verteilte Systeme Sebastian Stallenberger FH Schmalkalden WS10/11
Gliederung Einleitung Was ist Mozart? Paradigmen Die Entwicklungsumgebung „Hello World“ Verteilte Programmierung in Mozart Grundlagen Language entities Umsetzung der Verteilung Beispiel 2
Was ist Mozart? Mozart ist ein Programmiersystem, das auf der Programmiersprache „Oz“ basiert Zusammenarbeit des  Deutschen Forschungszentrums für künstliche Intelligenz Schwedischen Instituts für Informatik einigen anderen Instituten Wurde 1995 veröffentlicht, bis heute stetig weiterentwickelt Sollte ursprünglich Probleme mit künstlicher Intelligenz in mobilen Agenten lösen Erzeugt plattformunabhängigen Bytecode, der von einer virtuellen Maschine ausgeführt wird 3
Paradigmen Oz ist eine Multi-Paradigmen-Sprache Objektorientierte Programmierung Funktionale Programmierung Logische und Constraint-Programmierung Nebenläufigkeit Verteilung 4
Die Entwicklungsumgebung Erhältlich für die wichtigsten Betriebs- systeme Basiert auf Texteditor Emacs Wichtigste Komponenten: Compiler Emulator Debugger Profiler Buffer Browser 5
Buffer: Compiler: Im Emulator:						Im Browser: „Hello World“ 6
Gliederung Einleitung  Was ist Mozart? Paradigmen Die Entwicklungsumgebung „Hello World“ Verteilte Programmierung in Mozart Grundlagen Language entities Umsetzung der Verteilung Beispiel 7
Grundlagen „verbunden“ – Zwei oder mehr Anwendungen teilen sich eine Referenz auf ein Objekt, über das sie Informationen austauschen können „site“ -> Basiseinheit einer Verteilung Site = Prozess auf einer Maschine Ein Multitasking-System kann mehrere Sites hosten 8
Gliederung Einleitung  Verteilte Programmierung in Mozart Grundlagen Language entities Statefulentities Single-assignmententities Statelessentities Umsetzung der Verteilung Beispiel 9
LE – Statefulentities Statefulentities haben einen Zustand Bei Zustandsänderung -> globale Änderung 10
LE – Statefulentities – Objects (1) Cachedobject (auch: mobile objects): Obj={New Class Init} „default“-Einstellung Ersteller-site = „ownersite“ Entfernte sites = „proxysites“ Lokal in entfernter site ausgeführt Site muss sich Objekt holen Solange Objekt auf site bleibt, keine weiteren Nachrichten nötig Wenn mehrere sites das gleiche Objekt wollen, wird fair-share-Verfahren angewandt 11
LE – Statefulentities – Objects (2) Cachedobject (Fortsetzung): Ablauf: Proxy site 1 schickt Nachricht an ownersite Ownersite sendet „forwardingrequest“ an proxysite 2, die das Objekt gerade hostet Proxy site 2 übergibt Zeiger auf Objekt an proxysite 1 Klasse eines „cachedobjects“ wird lazily auf jede site kopiert, die das Objekt aufruft. 12
LE – Statefulentities – Objects (3) Stationaryobject Obj={NewStat Class Init} Für Server genutzt Bleibt auf ownersite Jede Referenz -> eigener Thread 2 Messages Bei Beginn Nach Ende, um zu synchronisieren Exceptions auf proxysite 13
LE – Statefulentities – Objects (4) Sequentialasynchronousstationaryobject Obj={NewSASO Class Init} Nur eine Nachricht Wartet nicht bis Ende Alle Aufrufe werden in gleichem Thread ausgeführt Ausführung sequentiell 14
LE – Statefulentities –  Other (1) Thread Führt Folge von Anweisungen aus Stationär auf ownersite Kommunikation über gemeinsame Daten Block, wenn diese Daten nicht vorhanden sind Port Port != Port Asynchroner n:1 Kanal, der nach FIFO-Prinzip arbeitet Stationär auf ownersite Nachrichten werden an Stream der ownersite angehängt Mehrere Nachrichten  Reihenfolge des Absendens Stream wird von „future“ beendet 15
LE – Statefulentities –  Other (2) Cell Updatebare Referenz auf andere Entität Gleiche Semantik wie cachedobjects Bis zu 3 Nachrichten für Aktualisierung der Referenz Wenn cell lokal  keine Nutzung des Netzwerks Thread-reentrant lock Erlaubt nur einem einzigen Thread eine bestimmte Programmregion zu „betreten“ Gleiche Semantik wie cachedobjects oder cells 16
LE – Single-assignmententities Wichtige Funktion: Binding Dataflow Variable an Wert gebunden -> alle verteilten Referenzen an selben Wert gebunden 17
LE – SAE – Dataflow Variables (1)  Logic variable Ähnlich „final“ in Java Können gebunden werden, bevor sie Wert haben Gründe für den Einsatz Effizienz Fehlertoleranz Sind Basis-Mechanismus für gleichläufige Programmierung 18
LE – SAE – Dataflow Variables (2)  Future Read-onlylogic variable Bei Bindungs-Versuch -> Block z.B. Schutz logischer Variablen vor Bindung durch unauthorisiertesites 19
LE – SAE – Stream  Kanal zur 1:m Kommunikation Liste mit log. var. oder future als letztes Element Bei Bindung an ownersite wird Bindung asynchron an alle sites geschickt, die den Stream referenziert haben Port + Stream = asynchroner n:m Kanal 20
LE - Statelessentities (1) Ohne internen Zustand Effiziente Verteilung Unterscheiden sich durch Art der Kopie Lazy (on demand) Nur Kopie, wenn benötigt Reduziert Netzlast, erhöht Latenz Eager (on supply) Immer Kopie Minimale Latenz, aber Gefahr  der Netzüberlastung erlaubte Anzahl an Kopien in einer site 21
LE - Statelessentities (2) Records und numbers: Werden „eagerly“ kopiert Procedures, funktions, classes, functors, chunks, atoms und names Werden „eagerly“ übers Netzwerk kopiert Können nur einmal auf einer site existieren Werden „sitedcomponents“ genannt Object-records: Werden „lazily“ kopiert 22
Language Entities 23 „Concepts, techniques, andmodelsofcomputerprogramming“ - Peter Van-Roy, Seif Haridi
Gliederung Einleitung  Was ist Mozart? Paradigmen Die Entwicklungsumgebung „Hello World“ Verteilte Programmierung in Mozart Grundlagen Language entities Umsetzung der Verteilung Beispiel 24
Umsetzung der Verteilung Offene Verteilung Geschlossene Verteilung Global naming 25
UdV – Naming (1) References Fälschungssichere Möglichkeit, auf Entität zuzugreifen Anwendungen gegenüber transparent ,[object Object],Referenzen können Lokal sein Entfernt sein Names Fälschungssichere Konstante Genutzt, um abstrakte Datentypen zu implementieren URLs Globale Referenz auf Datei, die auf Webserver liegt 26
UdV – Naming (2) Tickets Globale Möglichkeit, auf jede Entität zuzugreifen Ähnlich Reference, aber auch außerhalb eines Mozart Prozesses gültig Repräsentiert durch ASCII String 	z.B. oz-ticket://192.168.6.115:9000/h4074176#1* Explizit erschaffen und dereferenziert Kommuniziert z.B. über Protokolle wie TCP, IP, SMTP zwischen Prozessen Verteilung kann stattfinden: Lokal: über Dateisystem (incl. LAN) Global: über Webserver 27
UdV - Module (1) Connection:  stellt Basis Mechanismus tickets Anbieten eines Tickets:  	{Connection.offerOnce X T}{Connection.offerMany X T} Annehmen eines Tickets:  {Connection.take T X} Pickle:  Erlaubt einer Anwendung, stateless Daten (also Klassen, Prozeduren usw.) laden und zu schreiben {Pickle.save X PathV} {Pickle.load UrlV Value} Um Daten mit Zustand zu verteilen: Cell C={NewCellunit} 28
UdV - Module (2) Remote:  Einsatz in closeddistribution erlaubt aktiver Anwendung, eine neue „site“ zu erschaffen (auf lokaler oder entfernter Maschine) R={New Remote.managerinit(host:´meine.entfernte.maschine.de´)} init(host:   HostV     fork:   ForkA) Anschließend können neue Funktoren installiert werden über apply() {R apply(F X)} Weitere Methoden: ping(), close() DP:  Stellt Konfigurations-Techniken bereit 29
Gliederung Einleitung  Was ist Mozart? Paradigmen Die Entwicklungsumgebung „Hello World“ Verteilte Programmierung in Mozart Grundlagen Language entities Umsetzung der Verteilung Beispiel 30
Danke! „ Doesthe Mozart distribution model giveprogrammers a warm, fuzzyfeelingwhenwritingdistributedapplications?  	In short, yesitdoes.“ 31

Mais conteúdo relacionado

Destaque

Planificador de proyectos definitivo
Planificador de proyectos   definitivoPlanificador de proyectos   definitivo
Planificador de proyectos definitivoAna Valdés
 
Departamento santander del sur cristian rincon
Departamento santander del sur cristian rinconDepartamento santander del sur cristian rincon
Departamento santander del sur cristian rinconcristian2002
 
Integrantes (1)
Integrantes (1)Integrantes (1)
Integrantes (1)elkinlopes
 
Eröffnung Medienkompass im Saarland 16_06_2016
Eröffnung Medienkompass im Saarland 16_06_2016Eröffnung Medienkompass im Saarland 16_06_2016
Eröffnung Medienkompass im Saarland 16_06_2016Michael Gros
 
Training & Development 2012
Training & Development 2012Training & Development 2012
Training & Development 2012Stefan Hohmann
 
Windows Vista Installieren
Windows Vista InstallierenWindows Vista Installieren
Windows Vista InstallierenBrainkillaah
 
Conditional Powerpoint
Conditional PowerpointConditional Powerpoint
Conditional PowerpointDave Galloway
 
Leitfaden test stromquelle[1]
Leitfaden test stromquelle[1]Leitfaden test stromquelle[1]
Leitfaden test stromquelle[1]chrissoule72
 
Grupo 3 natalidad
Grupo 3 natalidad Grupo 3 natalidad
Grupo 3 natalidad marcelopepon
 
Revista escolar
Revista escolarRevista escolar
Revista escolarcurso99
 
El papel de la instrucción gramatical
El papel de la instrucción gramaticalEl papel de la instrucción gramatical
El papel de la instrucción gramaticalItt Prinsloo
 
Die Verankerung digitaler Kompetenzen im Lehrplan 21
Die Verankerung digitaler Kompetenzen im Lehrplan 21Die Verankerung digitaler Kompetenzen im Lehrplan 21
Die Verankerung digitaler Kompetenzen im Lehrplan 21Beat Döbeli Honegger
 
Actividad integradora 1
Actividad integradora 1Actividad integradora 1
Actividad integradora 1Ana Alamilla
 

Destaque (19)

Intelligenz
IntelligenzIntelligenz
Intelligenz
 
Asignación
AsignaciónAsignación
Asignación
 
Planificador de proyectos definitivo
Planificador de proyectos   definitivoPlanificador de proyectos   definitivo
Planificador de proyectos definitivo
 
Departamento santander del sur cristian rincon
Departamento santander del sur cristian rinconDepartamento santander del sur cristian rincon
Departamento santander del sur cristian rincon
 
Integrantes (1)
Integrantes (1)Integrantes (1)
Integrantes (1)
 
Eröffnung Medienkompass im Saarland 16_06_2016
Eröffnung Medienkompass im Saarland 16_06_2016Eröffnung Medienkompass im Saarland 16_06_2016
Eröffnung Medienkompass im Saarland 16_06_2016
 
Jazz Nerph
Jazz NerphJazz Nerph
Jazz Nerph
 
Training & Development 2012
Training & Development 2012Training & Development 2012
Training & Development 2012
 
Windows Vista Installieren
Windows Vista InstallierenWindows Vista Installieren
Windows Vista Installieren
 
Conditional Powerpoint
Conditional PowerpointConditional Powerpoint
Conditional Powerpoint
 
Leitfaden test stromquelle[1]
Leitfaden test stromquelle[1]Leitfaden test stromquelle[1]
Leitfaden test stromquelle[1]
 
Grupo 3 natalidad
Grupo 3 natalidad Grupo 3 natalidad
Grupo 3 natalidad
 
Revista escolar
Revista escolarRevista escolar
Revista escolar
 
El papel de la instrucción gramatical
El papel de la instrucción gramaticalEl papel de la instrucción gramatical
El papel de la instrucción gramatical
 
D
DD
D
 
Fase3 rihc diapositivas
Fase3 rihc diapositivasFase3 rihc diapositivas
Fase3 rihc diapositivas
 
Die Verankerung digitaler Kompetenzen im Lehrplan 21
Die Verankerung digitaler Kompetenzen im Lehrplan 21Die Verankerung digitaler Kompetenzen im Lehrplan 21
Die Verankerung digitaler Kompetenzen im Lehrplan 21
 
C map tools
C  map  toolsC  map  tools
C map tools
 
Actividad integradora 1
Actividad integradora 1Actividad integradora 1
Actividad integradora 1
 

Semelhante a Distributed Programming in Mozart

Multithreading in c# mit tpl
Multithreading in c# mit tplMultithreading in c# mit tpl
Multithreading in c# mit tplDavidT27
 
Sicherheitsfunktionen In Aktuellen Betriebssystemen Talk
Sicherheitsfunktionen In Aktuellen Betriebssystemen TalkSicherheitsfunktionen In Aktuellen Betriebssystemen Talk
Sicherheitsfunktionen In Aktuellen Betriebssystemen TalkUdo Ornik
 
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...inovex GmbH
 
Ausfallsichere Kultur mit Plone
Ausfallsichere Kultur mit PloneAusfallsichere Kultur mit Plone
Ausfallsichere Kultur mit PloneJens Klein
 
IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007derDoc
 
Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17remigius-stalder
 
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesGregor Biswanger
 
OSMC 2008 | Nagios Hochverfügbar mit hearbeat V2 by Jan Dennis Bungart
OSMC 2008 | Nagios Hochverfügbar mit hearbeat V2 by Jan Dennis BungartOSMC 2008 | Nagios Hochverfügbar mit hearbeat V2 by Jan Dennis Bungart
OSMC 2008 | Nagios Hochverfügbar mit hearbeat V2 by Jan Dennis BungartNETWAYS
 
Infonova Devopscon München 2015
Infonova Devopscon München 2015Infonova Devopscon München 2015
Infonova Devopscon München 2015Georg Öttl
 
Nagios Conference 2007 | Aufbau eines hochverfügbaren Nagios Clusters by Mart...
Nagios Conference 2007 | Aufbau eines hochverfügbaren Nagios Clusters by Mart...Nagios Conference 2007 | Aufbau eines hochverfügbaren Nagios Clusters by Mart...
Nagios Conference 2007 | Aufbau eines hochverfügbaren Nagios Clusters by Mart...NETWAYS
 
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine ÜbersichtJürgen Gutsch
 
Docker - Containervirtualisierung leichtgemacht
Docker - Containervirtualisierung leichtgemachtDocker - Containervirtualisierung leichtgemacht
Docker - Containervirtualisierung leichtgemachtB1 Systems GmbH
 
Doctrine 2 - An Introduction (German)
Doctrine 2 - An Introduction (German)Doctrine 2 - An Introduction (German)
Doctrine 2 - An Introduction (German)Michael Romer
 
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher SoftwareEinsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher SoftwareAndreas Schreiber
 

Semelhante a Distributed Programming in Mozart (20)

Multithreading in c# mit tpl
Multithreading in c# mit tplMultithreading in c# mit tpl
Multithreading in c# mit tpl
 
Sicherheitsfunktionen In Aktuellen Betriebssystemen Talk
Sicherheitsfunktionen In Aktuellen Betriebssystemen TalkSicherheitsfunktionen In Aktuellen Betriebssystemen Talk
Sicherheitsfunktionen In Aktuellen Betriebssystemen Talk
 
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
Docker Security - Architektur und Sicherheitsfunktionen von Containervirtuali...
 
Ausfallsichere Kultur mit Plone
Ausfallsichere Kultur mit PloneAusfallsichere Kultur mit Plone
Ausfallsichere Kultur mit Plone
 
IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007
 
Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17Infrastructure as Code - BaselOne 17
Infrastructure as Code - BaselOne 17
 
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und KubernetesVerteilte Anwendungen bei Azure mit Docker und Kubernetes
Verteilte Anwendungen bei Azure mit Docker und Kubernetes
 
OSMC 2008 | Nagios Hochverfügbar mit hearbeat V2 by Jan Dennis Bungart
OSMC 2008 | Nagios Hochverfügbar mit hearbeat V2 by Jan Dennis BungartOSMC 2008 | Nagios Hochverfügbar mit hearbeat V2 by Jan Dennis Bungart
OSMC 2008 | Nagios Hochverfügbar mit hearbeat V2 by Jan Dennis Bungart
 
C1 CDH Sametime
C1 CDH SametimeC1 CDH Sametime
C1 CDH Sametime
 
Infonova Devopscon München 2015
Infonova Devopscon München 2015Infonova Devopscon München 2015
Infonova Devopscon München 2015
 
Nagios Conference 2007 | Aufbau eines hochverfügbaren Nagios Clusters by Mart...
Nagios Conference 2007 | Aufbau eines hochverfügbaren Nagios Clusters by Mart...Nagios Conference 2007 | Aufbau eines hochverfügbaren Nagios Clusters by Mart...
Nagios Conference 2007 | Aufbau eines hochverfügbaren Nagios Clusters by Mart...
 
Concurrency in java
Concurrency in javaConcurrency in java
Concurrency in java
 
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
.NET Core, .NET Standard & ASP.NET Core - Eine Übersicht
 
Ein Gopher im Netz
Ein Gopher im NetzEin Gopher im Netz
Ein Gopher im Netz
 
openHAB @ JUG Stuttgart
openHAB @ JUG StuttgartopenHAB @ JUG Stuttgart
openHAB @ JUG Stuttgart
 
Docker - Containervirtualisierung leichtgemacht
Docker - Containervirtualisierung leichtgemachtDocker - Containervirtualisierung leichtgemacht
Docker - Containervirtualisierung leichtgemacht
 
Concurrency Paradigmen
Concurrency ParadigmenConcurrency Paradigmen
Concurrency Paradigmen
 
openHAB @ rheinJUG Düsseldorf
openHAB @ rheinJUG DüsseldorfopenHAB @ rheinJUG Düsseldorf
openHAB @ rheinJUG Düsseldorf
 
Doctrine 2 - An Introduction (German)
Doctrine 2 - An Introduction (German)Doctrine 2 - An Introduction (German)
Doctrine 2 - An Introduction (German)
 
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher SoftwareEinsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
Einsatz von Subversion bei der Entwicklung technisch-wissenschaftlicher Software
 

Último

Presentation Endstation Dingden, Razzia von Rotterdam
Presentation Endstation Dingden, Razzia von RotterdamPresentation Endstation Dingden, Razzia von Rotterdam
Presentation Endstation Dingden, Razzia von RotterdamEus van Hove
 
Stadt Popasna.Stadt PopasnaStadt Popasna
Stadt Popasna.Stadt PopasnaStadt PopasnaStadt Popasna.Stadt PopasnaStadt Popasna
Stadt Popasna.Stadt PopasnaStadt PopasnaOlenaKarlsTkachenko
 
Kurzbeschreibung Schreibtools für die Toolbox.pdf
Kurzbeschreibung Schreibtools für die Toolbox.pdfKurzbeschreibung Schreibtools für die Toolbox.pdf
Kurzbeschreibung Schreibtools für die Toolbox.pdfHenning Urs
 
Dignitas Infinita - MENSCHENWÜRDE; Erklärung des Dikasteriums für die Glauben...
Dignitas Infinita - MENSCHENWÜRDE; Erklärung des Dikasteriums für die Glauben...Dignitas Infinita - MENSCHENWÜRDE; Erklärung des Dikasteriums für die Glauben...
Dignitas Infinita - MENSCHENWÜRDE; Erklärung des Dikasteriums für die Glauben...Martin M Flynn
 
Ein Telefongespräch. Ein Telefongespräch. Ein Telefongespräch
Ein Telefongespräch. Ein Telefongespräch. Ein TelefongesprächEin Telefongespräch. Ein Telefongespräch. Ein Telefongespräch
Ein Telefongespräch. Ein Telefongespräch. Ein TelefongesprächOlenaKarlsTkachenko
 
Do's and Don'ts für mobile Streamsetups - Beitrag zum #ScienceVideoCamp2024 d...
Do's and Don'ts für mobile Streamsetups - Beitrag zum #ScienceVideoCamp2024 d...Do's and Don'ts für mobile Streamsetups - Beitrag zum #ScienceVideoCamp2024 d...
Do's and Don'ts für mobile Streamsetups - Beitrag zum #ScienceVideoCamp2024 d...Mathias Magdowski
 

Último (7)

Presentation Endstation Dingden, Razzia von Rotterdam
Presentation Endstation Dingden, Razzia von RotterdamPresentation Endstation Dingden, Razzia von Rotterdam
Presentation Endstation Dingden, Razzia von Rotterdam
 
Stadt Popasna.Stadt PopasnaStadt Popasna
Stadt Popasna.Stadt PopasnaStadt PopasnaStadt Popasna.Stadt PopasnaStadt Popasna
Stadt Popasna.Stadt PopasnaStadt Popasna
 
Kurzbeschreibung Schreibtools für die Toolbox.pdf
Kurzbeschreibung Schreibtools für die Toolbox.pdfKurzbeschreibung Schreibtools für die Toolbox.pdf
Kurzbeschreibung Schreibtools für die Toolbox.pdf
 
Díptic PFI pfi pfi pfi pfi pfi pfi pf.pdf
Díptic PFI pfi pfi pfi pfi pfi pfi pf.pdfDíptic PFI pfi pfi pfi pfi pfi pfi pf.pdf
Díptic PFI pfi pfi pfi pfi pfi pfi pf.pdf
 
Dignitas Infinita - MENSCHENWÜRDE; Erklärung des Dikasteriums für die Glauben...
Dignitas Infinita - MENSCHENWÜRDE; Erklärung des Dikasteriums für die Glauben...Dignitas Infinita - MENSCHENWÜRDE; Erklärung des Dikasteriums für die Glauben...
Dignitas Infinita - MENSCHENWÜRDE; Erklärung des Dikasteriums für die Glauben...
 
Ein Telefongespräch. Ein Telefongespräch. Ein Telefongespräch
Ein Telefongespräch. Ein Telefongespräch. Ein TelefongesprächEin Telefongespräch. Ein Telefongespräch. Ein Telefongespräch
Ein Telefongespräch. Ein Telefongespräch. Ein Telefongespräch
 
Do's and Don'ts für mobile Streamsetups - Beitrag zum #ScienceVideoCamp2024 d...
Do's and Don'ts für mobile Streamsetups - Beitrag zum #ScienceVideoCamp2024 d...Do's and Don'ts für mobile Streamsetups - Beitrag zum #ScienceVideoCamp2024 d...
Do's and Don'ts für mobile Streamsetups - Beitrag zum #ScienceVideoCamp2024 d...
 

Distributed Programming in Mozart

  • 1. Distributed Programming in Mozart Verteilte Systeme Sebastian Stallenberger FH Schmalkalden WS10/11
  • 2. Gliederung Einleitung Was ist Mozart? Paradigmen Die Entwicklungsumgebung „Hello World“ Verteilte Programmierung in Mozart Grundlagen Language entities Umsetzung der Verteilung Beispiel 2
  • 3. Was ist Mozart? Mozart ist ein Programmiersystem, das auf der Programmiersprache „Oz“ basiert Zusammenarbeit des Deutschen Forschungszentrums für künstliche Intelligenz Schwedischen Instituts für Informatik einigen anderen Instituten Wurde 1995 veröffentlicht, bis heute stetig weiterentwickelt Sollte ursprünglich Probleme mit künstlicher Intelligenz in mobilen Agenten lösen Erzeugt plattformunabhängigen Bytecode, der von einer virtuellen Maschine ausgeführt wird 3
  • 4. Paradigmen Oz ist eine Multi-Paradigmen-Sprache Objektorientierte Programmierung Funktionale Programmierung Logische und Constraint-Programmierung Nebenläufigkeit Verteilung 4
  • 5. Die Entwicklungsumgebung Erhältlich für die wichtigsten Betriebs- systeme Basiert auf Texteditor Emacs Wichtigste Komponenten: Compiler Emulator Debugger Profiler Buffer Browser 5
  • 6. Buffer: Compiler: Im Emulator: Im Browser: „Hello World“ 6
  • 7. Gliederung Einleitung Was ist Mozart? Paradigmen Die Entwicklungsumgebung „Hello World“ Verteilte Programmierung in Mozart Grundlagen Language entities Umsetzung der Verteilung Beispiel 7
  • 8. Grundlagen „verbunden“ – Zwei oder mehr Anwendungen teilen sich eine Referenz auf ein Objekt, über das sie Informationen austauschen können „site“ -> Basiseinheit einer Verteilung Site = Prozess auf einer Maschine Ein Multitasking-System kann mehrere Sites hosten 8
  • 9. Gliederung Einleitung Verteilte Programmierung in Mozart Grundlagen Language entities Statefulentities Single-assignmententities Statelessentities Umsetzung der Verteilung Beispiel 9
  • 10. LE – Statefulentities Statefulentities haben einen Zustand Bei Zustandsänderung -> globale Änderung 10
  • 11. LE – Statefulentities – Objects (1) Cachedobject (auch: mobile objects): Obj={New Class Init} „default“-Einstellung Ersteller-site = „ownersite“ Entfernte sites = „proxysites“ Lokal in entfernter site ausgeführt Site muss sich Objekt holen Solange Objekt auf site bleibt, keine weiteren Nachrichten nötig Wenn mehrere sites das gleiche Objekt wollen, wird fair-share-Verfahren angewandt 11
  • 12. LE – Statefulentities – Objects (2) Cachedobject (Fortsetzung): Ablauf: Proxy site 1 schickt Nachricht an ownersite Ownersite sendet „forwardingrequest“ an proxysite 2, die das Objekt gerade hostet Proxy site 2 übergibt Zeiger auf Objekt an proxysite 1 Klasse eines „cachedobjects“ wird lazily auf jede site kopiert, die das Objekt aufruft. 12
  • 13. LE – Statefulentities – Objects (3) Stationaryobject Obj={NewStat Class Init} Für Server genutzt Bleibt auf ownersite Jede Referenz -> eigener Thread 2 Messages Bei Beginn Nach Ende, um zu synchronisieren Exceptions auf proxysite 13
  • 14. LE – Statefulentities – Objects (4) Sequentialasynchronousstationaryobject Obj={NewSASO Class Init} Nur eine Nachricht Wartet nicht bis Ende Alle Aufrufe werden in gleichem Thread ausgeführt Ausführung sequentiell 14
  • 15. LE – Statefulentities – Other (1) Thread Führt Folge von Anweisungen aus Stationär auf ownersite Kommunikation über gemeinsame Daten Block, wenn diese Daten nicht vorhanden sind Port Port != Port Asynchroner n:1 Kanal, der nach FIFO-Prinzip arbeitet Stationär auf ownersite Nachrichten werden an Stream der ownersite angehängt Mehrere Nachrichten  Reihenfolge des Absendens Stream wird von „future“ beendet 15
  • 16. LE – Statefulentities – Other (2) Cell Updatebare Referenz auf andere Entität Gleiche Semantik wie cachedobjects Bis zu 3 Nachrichten für Aktualisierung der Referenz Wenn cell lokal  keine Nutzung des Netzwerks Thread-reentrant lock Erlaubt nur einem einzigen Thread eine bestimmte Programmregion zu „betreten“ Gleiche Semantik wie cachedobjects oder cells 16
  • 17. LE – Single-assignmententities Wichtige Funktion: Binding Dataflow Variable an Wert gebunden -> alle verteilten Referenzen an selben Wert gebunden 17
  • 18. LE – SAE – Dataflow Variables (1) Logic variable Ähnlich „final“ in Java Können gebunden werden, bevor sie Wert haben Gründe für den Einsatz Effizienz Fehlertoleranz Sind Basis-Mechanismus für gleichläufige Programmierung 18
  • 19. LE – SAE – Dataflow Variables (2) Future Read-onlylogic variable Bei Bindungs-Versuch -> Block z.B. Schutz logischer Variablen vor Bindung durch unauthorisiertesites 19
  • 20. LE – SAE – Stream Kanal zur 1:m Kommunikation Liste mit log. var. oder future als letztes Element Bei Bindung an ownersite wird Bindung asynchron an alle sites geschickt, die den Stream referenziert haben Port + Stream = asynchroner n:m Kanal 20
  • 21. LE - Statelessentities (1) Ohne internen Zustand Effiziente Verteilung Unterscheiden sich durch Art der Kopie Lazy (on demand) Nur Kopie, wenn benötigt Reduziert Netzlast, erhöht Latenz Eager (on supply) Immer Kopie Minimale Latenz, aber Gefahr der Netzüberlastung erlaubte Anzahl an Kopien in einer site 21
  • 22. LE - Statelessentities (2) Records und numbers: Werden „eagerly“ kopiert Procedures, funktions, classes, functors, chunks, atoms und names Werden „eagerly“ übers Netzwerk kopiert Können nur einmal auf einer site existieren Werden „sitedcomponents“ genannt Object-records: Werden „lazily“ kopiert 22
  • 23. Language Entities 23 „Concepts, techniques, andmodelsofcomputerprogramming“ - Peter Van-Roy, Seif Haridi
  • 24. Gliederung Einleitung Was ist Mozart? Paradigmen Die Entwicklungsumgebung „Hello World“ Verteilte Programmierung in Mozart Grundlagen Language entities Umsetzung der Verteilung Beispiel 24
  • 25. Umsetzung der Verteilung Offene Verteilung Geschlossene Verteilung Global naming 25
  • 26.
  • 27. UdV – Naming (2) Tickets Globale Möglichkeit, auf jede Entität zuzugreifen Ähnlich Reference, aber auch außerhalb eines Mozart Prozesses gültig Repräsentiert durch ASCII String z.B. oz-ticket://192.168.6.115:9000/h4074176#1* Explizit erschaffen und dereferenziert Kommuniziert z.B. über Protokolle wie TCP, IP, SMTP zwischen Prozessen Verteilung kann stattfinden: Lokal: über Dateisystem (incl. LAN) Global: über Webserver 27
  • 28. UdV - Module (1) Connection: stellt Basis Mechanismus tickets Anbieten eines Tickets: {Connection.offerOnce X T}{Connection.offerMany X T} Annehmen eines Tickets: {Connection.take T X} Pickle: Erlaubt einer Anwendung, stateless Daten (also Klassen, Prozeduren usw.) laden und zu schreiben {Pickle.save X PathV} {Pickle.load UrlV Value} Um Daten mit Zustand zu verteilen: Cell C={NewCellunit} 28
  • 29. UdV - Module (2) Remote: Einsatz in closeddistribution erlaubt aktiver Anwendung, eine neue „site“ zu erschaffen (auf lokaler oder entfernter Maschine) R={New Remote.managerinit(host:´meine.entfernte.maschine.de´)} init(host:   HostV     fork:   ForkA) Anschließend können neue Funktoren installiert werden über apply() {R apply(F X)} Weitere Methoden: ping(), close() DP: Stellt Konfigurations-Techniken bereit 29
  • 30. Gliederung Einleitung Was ist Mozart? Paradigmen Die Entwicklungsumgebung „Hello World“ Verteilte Programmierung in Mozart Grundlagen Language entities Umsetzung der Verteilung Beispiel 30
  • 31. Danke! „ Doesthe Mozart distribution model giveprogrammers a warm, fuzzyfeelingwhenwritingdistributedapplications? In short, yesitdoes.“ 31