MMuKS II
Verteilte Systeme, Client, Server, Java, Prozesse, Threads
Verteilte Systeme, Client, Server, Java, Prozesse, Threads
-
- 1 / 24
-
Lernkarten
Was verstehen Sie unter "Sockets"?
- Kommunikation über Ports, bidirektionale Verb.
- Stream-Socket
- Verbindungsorientiert, TCP: Pakete erreichen Empfänger in richtiger Reihenfolge, Fehlerkontrolle
- Server-Klasse: Verbindungsaufnahme mit Server
- ServerSocket-Klasse: wartet auf Kontaktaufnahme durch Client(s)
- Datagramm-Socket
- Verbindungslos, UDP: Empfang der Datenpakete wird nicht quittiert
- VT: kann schneller sein, da keine Verb. Aufgebaut werden muss
Was verstehen Sie unter "Threads"?
- Ausführungs-Strang in einem Prozess
- Prozess hat min. 1 Thread
- parallel ablaufende Aktivitäten innerhalb eines Prozesses
- Ressourcen gehören dem Prozess und werden von allen Threads des Prozesses gemeinsam genutzt
- VT:
- Schnellere Umschaltung zwischen Threads
- Einfache Nutzung gemeinsamer Ressourcen
- Verteilen von Threads auf mehrere Prozessoren möglich
- NT:
- Thread kann gesamten Prozess zum Blockieren oder Abstürzen bringen
- Daten-Inkonsistenzen
Welche Möglickeiten gibt es in Java um Threads zu erzeugen?
Klasse von Thread ableiten
- Thread: implementiert Runnable, run() Methode muss überschrieben werden
Klasse implementiert Interface Runnable
- Runnable: besitzt nur Methode void run(), welche beim Threadstart ausgeführt wird
run() wird durch den Aufruf von start() ausgeführt.
Was verstehen Sie unter "Streams"?
- kontinuierliche Abfolge von Daten
- Daten können unbegrenzte Länge besitzen
- Geschwindigkeit kann variieren
- kann nur sequenziell bearbeitet werden
- Pufferung aus Performancegründen möglich
- kann nur entweder Eingang oder Ausgang sein
- Byte-Stream Klassen:
- Input-/Outputstream: Byteein- und –ausgabe
- Bei Bilddateien, ausführbaren Dateien
- Character-Stream Klassen
- Reader/ Writer: Characterein- und –ausgabe
- Bei Texten (Tastatureingabe, Textdateien)
Was verstehen Sie unter einer "abstrakten Klasse"?
- Klasse, von der keine Objekte gebildet werden können
- kann von anderen Klassen geerbt werden, diese müssen Methoden der abstrakten Klasse überschreiben
Was ist Java?
- Objektorientierte Programmiersprache, keine Funktionen außerhalb von Klassen
- Plattformunabhängig:
- Java-Programm durch Java-Compiler in Bytecode übersetzt
- Bytecode durch JVM (Java Virtual Machine) in Maschinencode der verwendeten Hardware übersetzt und ausgeführt
Was ist ein "Thin Client"?
- Client übernimmt nur Aufgabe der Präsentationsschicht (GUI)
- z.B. Webbrowser für statische Web-Seiten
- Client erhält nur Daten, die zu Ein- und Ausgabe bzw. Präsentation notwendig sind
- Daten müssen vom Server vollständig aufgebreitet sein = hohe Belastung für Server
Was ist ein "Fat Client"?
- Erweiterung des Clients um die Aufgaben der Anwendungslogik (zur GUI)
- Client verarbeitet Daten (oder Teile davon) selber = Entlastung des Servers
- NT: Installation einer Anwendungslogik auf Client
Was verstehen Sie unter "synchroner und asynchroner Kommunikation"?
Synchron
- Client fragt beim Server an, wartet auf Antwort, arbeitet erst nach Eintreffen der Antwort weiter
Asynchron
- Client arbeitet nach Anfrage weiter und wartet nicht erst auf die Antwort
Ein-Weg-Kommunikation
- Rückantwort ist nicht erforderlich
Was ist ein "Super - Server"?
- Überwacht mehrere Netzwerk-Sockets bzw. Ports
- Startet bei Anfrage durch Client den entsprechenden Server
- VT: Spart Systemressourcen, da Server-Prozesse nur bei Bedarf gestartet und anschließend gestoppt werden
- NT: Erhöhung der Antwortzeiten für Client
Was verstehen Sie unter dem "http-Protokoll"?
- Anwendungsprotokoll des Internet Protokollstandards
- Anwendungsschicht, TCP Protokoll
- Datentransfer zwischen Client und Server
- Übertragung von Web-Inhalten im WWW
Was sind "Cookies"?
- Ermöglicht Datenspeicherung eines Web-Servers im Browser
- Erneuter Besuch der Website = Browser sendet Cookie zurück
Nenne Eigenschaften von parallel und sequenziell arbeitenden Servern!
- Sequenziell:
- Bearbeiten der Anfrage nach Erhalt, Senden der Rückantwort an Client
- Danach: Bearbeiten der nächsten Anfrage oder warten auf neue
- Parallel:
- Start eines neuen Prozesses zur Bearbeitung nach Erhalt einer Anfrage
- Server-Prozess selbst wartet auf neue Anfrage
- Bearbeitungsprozess sendet Rückantwort an Client und beendet sich dann selbst
Was ist AJAX?
- Aus Web-Seite heraus können http-Anfragen an Server gestellt werden
- Antworten vom Server werden in bestehende HTML-Seite im Browser eingebaut
- (X)HTML, JavaScript, DOM, XML und XMLHttpRequest-Objekt
- Zerlegung der Webseite in einzelne logische Einheiten
Nenne die Schichten verteilter Systeme!
- Präsentationsschicht (GUI)
- Steuerung
- Anwendungslogik (Logik)
- Datenverwaltung
- Persistenzschicht (Datenhaltung)
Nennen Sie Gründe für die Verteilung von Anwendungen!
Gründe für die Verteilung von Anwendungen:
- Gleichzeitigkeit
- Verteiltes Rechnen
- Ausfallsicherheit (Redundante Ausführung)
- Ressourcenverteilung
- Lastverteilung
Welche Serverzustände gibt es?
Zustandsinvariant
- Anfragen von Clients verändern nicht den Zustand von Objekten auf dem Server. (Bsp.: Time-Server)
Zustandsändernd
- Anfrage von Clients können Objekte auf dem Server ändern
Zustandslos
- Jede Anfrage wird für sich behandelt
Zustandsspeichernd
- Anfragen werden mit vorhergehenden Anfragen in Beziehung gebracht
Was ist der Cache?
- Zwischenspeicherung von Daten auf dem Client
- Konsistenzproblem zu den tatsächlichen Daten auf dem Server bzw. zu anderen Cache-Daten auf anderen Clients
- Strategie zur Konsistenzbewahrung:
- Dirty-bit, write-back, delayed-write, write-on-close, write-through
- Hierdurch werden Chache-Daten auf Aktualität bei Server überprüft.
- Strategie der Lese- und Schreibsperre ist auch möglich
In was wird Parallelverarbeitung unterschieden?
1. Nebenläufigkeit:
Nicht voneinander abhängige Aktivitäten laufen gleichzeitig ab (z.B. Textverarbeitung und MP3-Player)
2. Parallelität:
Mehrere Prozessoren sind an einer Aktivität beteiligt (z.B. Videokompression)
3. Verteiltheit:
Räumliche Aufteilung eines Systems (z.B. Computernetzwerk)
Nenne Prozesszustände!
Bereit:
Prozess besitzt alle nötigen Betriebsmittel und ist bereit zu laufen. Wartet auf Zuteilung der CPU.
Rechnend:
Prozess wird von einer CPU ausgeführt.
Wartend:
Prozess ist blockiert und wartet auf ein Ereignis.
Was sind Gründe für einen Prozesswechsel?
Warum verbraucht ein Prozesswechsel Zeit?
Gründe für einen Prozesswechsel sind:
- Prozess ist beendet
- Prozess muss warten
- Betriebssystem wählt anderen Prozess
Warum verbraucht ein Prozesswechsel Zeit?
- Das Betriebssystem verwaltet zu jedem Prozess die zu ihm gehörenden Daten in einem sogenannten PCB (Prozess Control Block).
- Beim Prozess- bzw. Kontextwechsel muss der PCB zweier Prozesse getauscht werden.
- Ein Thread-Wechsel geht wesentlich schneller, da der TCP (Thread Control Block) weniger Informationen enthält.
Was verstehen Sie unter Semaphoren?
- Entwickelt von Edsger W. Dijkstra (niederl. Inform)
- Dient der Synchronisation von gemeinsam genutzten Ressourcen (kritische Bereiche)
- Der Semaphor ist eine Variable, die anzeigt, ob ein kritischer Bereich bereits von einem anderen Prozess/Thread betreten wurde
- Ein Zugriff auf den Semaphor muss atomar sein
- Hierfür werden die Zähl-Variablen:
P: passieren und
V: freigeben verwendet
- Die Weiterentwicklung hierzu nennt man Monitorkonzept, wobei hier der Monitor als Objekt (z.B. Klasse) der Semaphoren-Variable entspricht.
Was verstehen Sie unter dem „Erzeuger-Verbraucher-Problem“?
- Erzeuger = Prozess welcher Ressource produziert
- Verbraucher = Prozess welcher Ressource verbraucht
- Dient zur Synchronisation des Zugriffs auf den Puffer
- Lösung über 3 Semaphore
MUTEX: wechselseitiger Ausschluss
FULL: zeigt Erzeuger, dass Puffer voll ist
EMPTY: zeigt Verbraucher, dass Puffer leer ist
- Der exklusive Zugriff auf die kritischen Abschnitte wird mit:
WAIT(b): aufrufender Prozess wird blockiert
SIGNAL(b): weckt den blockierten Prozess wieder auf
Was verstehen Sie unter Deadlocks?
Wie kann mit einem Deadlock umgegangen werden?
= wenn mehrere Prozesse/Threads blockierend auf mehrere Objekte zugreifen wollen
Mögliche Reaktion auf Deadlocks
- Vogel-Strauß-Taktik:
ignorieren
- Hold and Wait:
Jeder Prozess gibt zu Beginn an, welche Betriebsmittel er benötigt. Falls alle benötigten Betriebsmittel gleichzeitig frei sind, bekommt sie ein Prozess auf einmal zugeteilt.
- Circular Wait:
Betriebsmittel werden linear geordnet und in aufsteigender Reihenfolge vergeben.
- Preemption durchführen
Einem Prozess werden Betriebsmittel entzogen, um sie einem anderen zuzuteilen.