...


Henry Kingston
Diese Lernkarten behandeln verteilte Systeme auf Universitätsniveau und konzentrieren sich auf Themen wie Server, Clients, Threads, Ressourcen und Kommunikation. Sie decken die Dezentralisierung von Daten, Diensten und Funktionalitäten, Skalierbarkeit, Transparenz und die Verwendung von Java für Serialisierung ab. Besonders nützlich sind sie für Studierende und Entwickler, die sich mit verteilten Systemen und deren Implementierung in der Praxis auseinandersetzen möchten.
Karten
62
Lernende
1
Sprache
Deutsch
Kategorie
Informatik
Stufe
Universität
Erstellt / Aktualisiert
12.04.2014 / 17.07.2014

Lernkarten

Was ist Transienz?

Transienz bedeutet "vorrübergehend", in Java können Attribute mit -transient- gekennzeichnet werden. Diese werden nicht serialisiert unter der Vorraussetzung, dass das Attribut nicht benötigt bzw. wiederhergestellt werden kann.

Was ist der Unterschied zwischen Thread.run() und Thread.start()?

Bei Thread.run() wird nur die Methode ausgeführt aber kein neuer Thread gestartet.

Thread.start() startet einen neuen Thread der run() ausführt.

Was Sind Motivationsgründe für ein Verteiltes System?

  • Schwächen zentalisierter Systeme
  • Netzausbau
  • Gesellschaftliche und Industrielle Trends
  • Technologische Fortschritte

Beschreiben sie den Begriff Verteiltes System=

  • Gruppe unabhängiger Computer die als einziges coherentes System erscheinen
  • System bei dem componenten über netzwerk verbunden sind und nur über nachrichten kommunizieren.

Beschreiben Sie den Begriff der Symmetrischen Interaktion

Interaktionsrollten unter Komponenten sind gleichwertig

Beispiel Peer-to-Peer

(Begriffserweiterung: komponenten haben gleichwertigen Ressourcenzugriff)

Beschreiben Sie den Begriff der Asymmetrischen Interaktion

Keine gleichwertigen Interaktionsrollen unter Komponenten

Beispiel: Client Server

Wie können Komponenten kooperieren?

  • Interaktion auf Basis gemeinsamer Ressourcen/Daten (Shared Memory)
  • Verteilte Kooperation durch Kommunikation

Was ist nötig um Nebenläufigkeit für Kompnenten mit geteiltem Ressourcenzugriff zu ermöglichen?

  • Synchronisation von Komponenten
  • zusätzliche Ressourcen steigern Gesamtkapazität des verteilten Systems

Wie wird bei fehlender globaler uhr eine Koordination unter Komponenten eines verteilten Systems gehandhabt?

  • Koordination von Komponenten nur über Nachrichteninhalt, nicht über Nachrichtenzeitpunkt
  • Keine Koordination von Komponenten ohne Nachrichten

Nennen Sie Vorteile von Verteilten Systemen

  • Unterstüzung verteilter Aufgaben
  • Zuerlässigkeit
  • Unterstützung spezieller Hardware
  • Ausnutzung freier Ressourcen

Nennen Sie Nachteile von Verteilten Systemen

  • Kommunikationskosten
  • Komplexität bei Entwicklung
  • Komplexität im Betrieb

Was sind Threads?

Threads sind leichtgewichtige Prozesse die innerhalb normaler schwergewichtiger prozesse laufen. (Ausfürungsfäden innerhalb von Prozess)

Was ist ein Kritischer Abschnitt?

Ein Codebereich der immer nur von einem Thread gleichzeitig durchlaufen werden kann.

Was sind atomare Operationen?

Methoden die nur von einem Thread gleichzeitig durchlaufen werden können.

Beschreiben sie einen Mutex in Java

Object mutex = new Object();

synchronized (mutex) {

...

}

Beschreiben sie eine atomare Methode in Java

public class A {

    public synchronized meth() { // lockt auf Object on A

        ...

    }

}

Wofür werden Threads in verteilten Systemen Verwendet?

Server:

  • Nachrichten/Daten parallel bearbeiten / Nachrichten empfangen
  • Bedienen mehrerer Clients parallel

Client:

  • Asynchrone Kommunikation

Realisierung in Java:

  • RMI Server inhärent, Client manuell
  • Socket manuell bei Client und Server

Wie werden Threads in Java realisiert?

1.    

public class A extends Thread ... override run()

new A().start();

2.

public class B implements Runnable ... oerride run()

new Thread(new B()).start();

Beschreiben Sie die Threadzustände in Java

so

Was sind Race Conditions?

Eine Race Condition ist eine Konstellation in einem Programm in dem das Ergebnis vom zeitlichen verhalten von Einzeloperationen abhängt (zb: Thread 1 schneller als Thread 2)

Wie werden Monitore in Java Realisiert?

Object monitor = new Object();

Thread1:

... monitor.wait(); // wartet bis notify()

 

Thread 2:

... monitor.notify(); // Thread 1 hört auf zu warten

Nennen sie den Unterschied zwischen notify() und notifyAll()

notify weckt ersten Thread der wait() aufgerufen hat.

notifyAll weckt alle Threads

Was versteht man unter einem Deadlock?

Bsp: Thread 1 hat Ressource A und wartet auf Ressource B

Thread 2 hat Ressource B und wartet auf Ressource A.

 

Was versteht man unter Starvation?

Unzureichender, unfairer Anteil an Rechenleisstung für mindestens einen Thread -> Thread verhungert

Was ist der Grad der Nebenläufigkeit?

Art und weise auf die ein Programm mit oder ohne Mehrere Threads agiert.

Beschreiben Sie den Grad der Nebenläufigkeit folgender Beispiele

  1. Ohne Arbeitsteilung - Sequentiell
  2. Mit Arbeitsteilung - Sequentiell
  3. Mit Arbeitsteilung (2 Threads) - Sequentiell

Beschreiben Sie den Grad der Nebenläufigkeit des folgenden Beispiels

Mit Arbeitsteilung (n+1 Threads) - Sequentiell

Bestimmen Sie den Grad der Nebenläufigkeit des folgenden Beispiels

Mit Arbeitsteilung (n+n+1 Threads) - Nebenläufig (1 Thread pro Task)

Beschreiben Sie den Grad der Nebenläufigkeit des folgenden Beispiels

Mit Arbeitsteilung (n+m+1 Threads, m << n) - Nebenläufig (Konstanter Thread-Pool mit m Threads)

Beschreiben Sie den Grad der Nebenläufigkeit des folgenden Beispiels

Mit Arbeitsteilung  (n+m+k+1 Threads, m << n, k ≤ n-m)  - Nebenläufig (Dynamischer Thread-Pool mit m Initial-Threads)

 

Vervollständigen sie die Tabelle

tabelle

Was versteht man unter Serialisierung?

Konvertierung eines Objekts in Bytestrom

Wozu wird Serialisierung verwendet?

  • Persistente Objektspeicherung
  • Netzwerkkommunikation
    • Beispiel Java RMI: Transport von Objekten: Parameter und Ergebnisse
    • Beispiel Socket-Programmierung: Kein eigenes Format für Kommunikation erforderlich

Wann ist eine Klasse in Java Serialisierbar?

  • implements Serializable
    • keine Methoden
    • automatische serialisierung durch Laufzeitsystem
    • Reihenfolge der Serialisierung
      • Header mit Objekttype
      • Instanzvariablen
    • Verweisduplikate: Mehrfach referenzierte Objekte nur einmal in Bytestrom
      • reduktion von Zyklen und Redundanz
  • Superklasse ist serialisierbar

Wie funktioniert die Serialisierung von Objekten in Java?

OutputStream oStream = new FileOutputStream(filename);

ObjectOutputStream myStream = new ObjectOutputStream(oStream);

myStream.writeObject(mySerializableClass);

myStream.flush();

myStream.close();

Wie werden Objeke in java Deserialisiert?

InputStream iStream = new FileInputStream(filename);
        ObjectInputStream myStream = new ObjectInputStream(iStream);
        mySerializableClass = (MySerializableClass) myStream.readObject();
        myStream.close();

Welche Probleme gibt es bei Serialisierung?

Unterschiedliche KLassenversionen bei Serialisierung und Deserialisierung

InvalidClassException, wenn Instanzvariable serialVersionUID verschieden

Was ist ie serialVersionUID?

Versionsnummer der Klasse

Wird automatischvon System gesetzt

oder Manuelle Deklaration und Definition

private static final long serialVersionUID = 1234;

Empfehlung Manuelle Definition (Java Object Serialization Specification)

Eclipse: Übernimmt manuelles Setzen automatisch

Wozu dient das Interface Externalizable?

  • Eigenständige Definition des Serialisierungsformats
  • Definition der Methoden 
    • public void readExternal (ObjectInput);
    • public void writeExternal (ObjectOutput);
  • Vorteil: Flexibler
  • Nachteil: Fehleranfälliger

Beschreiben Sie das CS (Consumer/Server) Modell?

Ressource: Beliebige physikalische oder virtuelle Komponente (Objekt) eines Rechnersystems, welche nur in begrenzter Form zur Verfügung steht

Lernen