...
-
- 1 / 62
-
Flashcards
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();
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.
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