MMuKS II

Verteilte Systeme, Client, Server, Java, Prozesse, Threads

Verteilte Systeme, Client, Server, Java, Prozesse, Threads


John Dean
Diese Lernkarten behandeln fortgeschrittene Themen der Informatik, die an Universitäten gelehrt werden. Sie decken Konzepte wie Prozesse, Serverzustände, parallele Verarbeitung, und verteilte Systeme ab, wobei Begriffe wie Deadlocks, Semaphore, und AJAX im Fokus stehen. Die Karteikarten sind besonders nützlich für Studierende und IT-Profis, die ihr Verständnis von Systemarchitekturen und Netzwerkkommunikation vertiefen möchten, um effiziente und robuste Anwendungen zu entwickeln.
Karten
24
Lernende
1
Sprache
Deutsch
Kategorie
Informatik
Stufe
Universität
Erstellt / Aktualisiert
20.09.2014 / 20.09.2014

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!

  1. Präsentationsschicht (GUI)
  2. Steuerung
  3. Anwendungslogik (Logik)
  4. Datenverwaltung
  5. 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.

Lernen