Entwicklung verteilter eingebetteter Systeme - Einführung Damian Bolik 25.02.2002
Entwicklung verteilter eingebetteter Systeme - Einführung Damian Bolik Übersicht (1) Klassifizierung von Anwendungen nebenläufige Anwendungen Echtzeitanwendungen verteilte Anwendungen Umgebungen nebenläufiger Anwendungen Multitasking symmetrische Multiprozessorumgebung verteilte Prozessorumgebung Damian Bolik Entwicklung verteilter eingebetteter Systeme - Einführung Entwicklung verteilter eingebetteter Systeme - Einführung
Entwicklung verteilter eingebetteter Systeme - Einführung Übersicht (2) EES-Konzepte aktive und passive Objekte Prozesse, Threads, Tasks Synchronisation von Tasks Monitore Softwareentwicklungsmethode vs. -notation Weitere Aspekte bei der Entw. von EES Task Scheduling Middleware Damian Bolik Entwicklung verteilter eingebetteter Systeme - Einführung
Nebenläufige Anwendungen Parallele Ausführung von Tasks Ereignisse zufällig und überlappend Viele Probleme sind von Natur aus nebenläufig (Dijkstra 1968) komplexes Design, wenn die Tasks nicht getrennt werden Aber Probleme bei der Synchronisation z.B. Deadlocks Damian Bolik Entwicklung verteilter eingebetteter Systeme - Einführung
Echtzeitanwendungen/-systeme (Nebenläufige) Anwendungen mit Zeitschranken weiche Echtzeit-Anforderungen harte Echtzeit-Anforderungen Begriff „Echtzeitsystem“ beinhaltet Echtzeitanwendung(en), Echtzeit-OS und Echtzeit-I/O Damian Bolik Entwicklung verteilter eingebetteter Systeme - Einführung
Entwicklung verteilter eingebetteter Systeme - Einführung Echtzeitsysteme Oft eingebettet Interaktion mit der Umgebung Zeitschranken Echtzeitkontrolle „reaktive Systeme“ Damian Bolik Entwicklung verteilter eingebetteter Systeme - Einführung
Verteilte Anwendungen (1) Anwendung ist auf „Knoten“ an geographisch verschiedenen Orten verteilt Jeder Knoten ist eine eigenständige Ausführungseinheit (Computersystem) Knoten sind verbunden über Netzwerk (LAN/WAN) Damian Bolik Entwicklung verteilter eingebetteter Systeme - Einführung
Verteilte Anwendungen (2) Vorteile: bessere Verfügbarkeit bessere Reaktionszeit „Load Balancing“ flexiblere Konfiguration lokale Pflege einfache Erweiterbarkeit eventuell günstiger Damian Bolik Entwicklung verteilter eingebetteter Systeme - Einführung
Umgebungen nebenläufiger Anwendungen (1) Multitasking Ein Rechner, ein Prozessor CPU Systembus I/O Speicher Display Damian Bolik Entwicklung verteilter eingebetteter Systeme - Einführung
Umgebungen nebenläufiger Anwendungen (2) symmetrische Multiprozessorumgebung Ein Rechner, mehrere Prozessoren CPU CPU Systembus I/O Speicher Display Damian Bolik Entwicklung verteilter eingebetteter Systeme - Einführung
Umgebungen nebenläufiger Anwendungen (3) Verteilte Prozessorumgebung Mehrere Rechner (Knoten) über Netzwerk Knoten 1 Knoten 2 CAN/LAN/WAN Knoten 3 Knoten 4 Damian Bolik Entwicklung verteilter eingebetteter Systeme - Einführung
Aktive und Passive Objekte Aktive Objekte repräsentieren einen Task haben ihr eigenes „Leben“ Passive Objekte haben Methoden, die von aktiven Objekten aufgerufen werden meist Datenobjekte Damian Bolik Entwicklung verteilter eingebetteter Systeme - Einführung
Prozesse, Threads, Tasks Vom Betriebssystem verwaltete Ausführungseinheit bei Multitasking „heavyweight process“, da beim Taskwechsel viel Zeit benötigt wird oder einziger Prozess auf einer CPU evtl. intern mehrere nebenläufige Threads „lightweight process“ Task ist ein Prozess ohne Threads oder ein Thread Damian Bolik Entwicklung verteilter eingebetteter Systeme - Einführung
Synchronisation von Tasks Semaphore bei Ressourcen, auf die exklusiv zugegriffen werden muss Fehleranfällig Signale (Events) meist ohne Datenaustausch Signale sind asynchron Nachrichten mit Datenaustausch synchron: auf Antwort wird gewartet asynchron: auf Antwort wird nicht gewartet Damian Bolik Entwicklung verteilter eingebetteter Systeme - Einführung
Entwicklung verteilter eingebetteter Systeme - Einführung Monitore Monitor ist ein Objekt Kapselt eine kritische Ressource (Daten, Peripherie, etc.) Semaphore ist integriert Auf die Ressource wird über die Methoden des Objektes zugegriffen Dabei wird automatisch die Semaphore gesetzt, wodurch Zugriff exklusiv ist Damian Bolik Entwicklung verteilter eingebetteter Systeme - Einführung
Softwareentwicklungsmethode vs. -notation (1) Wir unterscheiden Softwareentwicklungs- konzepte (z.B. „Information Hiding“) strategien (z.B. Objekt-orientiert) notationen (z.B. UML, Statecharts) Damian Bolik Entwicklung verteilter eingebetteter Systeme - Einführung
Softwareentwicklungsmethode vs. -notation (2) Softwareentwicklungsmethoden (z.B. CODARTS, ROOM, COMET) beinhalten: mehrere Softwareentwicklungskonzepte eine oder mehrere Softwareentwicklungsstrategien eine oder mehrere Softwareentwicklungsnotationen „Schritt für Schritt“-Anleitung zur Softwareentwicklung (Prozess) Damian Bolik Entwicklung verteilter eingebetteter Systeme - Einführung
Weitere Aspekte bei der Entwicklung von EES Task Scheduling Im Multitasking muss Betriebssystem zwischen nebenläufigen Tasks wechseln Verschiedene Algorithmen (z.B. round robin, priority preemption) Besonders kritisch bei Echtzeit-Anwendungen Middleware Software, um heterogene Plattformen über einheitliche Schnittstellen zu verbinden Beispiele: RPC, Java RMI, COM, CORBA Damian Bolik Entwicklung verteilter eingebetteter Systeme - Einführung
Softwareentwicklungsmodelle (1) Wasserfallmodell Requirements, Analysis and Specification Architectural Design Detailed Design Coding Unit Testing Integration Testing System Testing Damian Bolik Entwicklung verteilter eingebetteter Systeme - Einführung
Softwareentwicklungsmodelle (2) Spiralmodell 1. Define objektives, alternatives and constraints 2. Analyze risks 4. Plan next cycle 3. Develop product Damian Bolik Entwicklung verteilter eingebetteter Systeme - Einführung