K1 & K2 - Einführung in Webtechnologien
FHWS Würzburg - WINF - 2. Semester E-Commerce bei Steffen Heinzel - SS 2015 Teil 1 - Netzwerkgrundlagen, Betriebssysteme und Nebenläufigkeit
FHWS Würzburg - WINF - 2. Semester E-Commerce bei Steffen Heinzel - SS 2015 Teil 1 - Netzwerkgrundlagen, Betriebssysteme und Nebenläufigkeit
-
- 1 / 16
-
Lernkarten
Was ist das TCP und welche Eigenschaften zeichnen es aus?
Transmission Control Protocol
- Verbindung rein software-technisch (virtuell)
- TCP-Nachrichten werden zur Übertragung in IP-Datagramme gekapselt
- Keine TCP-Implementierung auf Zwischensystemen nicht erforderlich
- TCP übermittelt Daten zuverlässig (Reihenfolge und erneute Übertragung bei Fehlern)
- 3-Way-Handshake (C -syn-> S -syn,ack-> C -ack-> S)
- Vollduplexübertragung
- bidirektionale Ende zu Ende Datenübertragung
- Sender und Empfänger können gleichzeitig Daten senden
- Nachrichten werden als fortlaufender Byte-Strom übertragen
- Flußsteuerung
- Anpassung der Länge der übertragenen Nachrichten an die Netzwerklast
- Überlastprotokolle
- schwierig, da das IP-Protokoll keine Informationen über zurückliegende Ereingisse liefern kann
- Wird indirekt erschlossen
Was ist das UDP und was zeichnet es aus? Warum und wozu wird es gebraucht?
User Datagram Protocol (OSI -> Transportschicht)
- UDP Datagramme können verloren gehen
- Datagramme können ungeordnet geliefert werden -> Unzuverlässig!
- Datagramme werden unabhänig voneinadner geliefert
Da es keinen Verbindungsaufbau hat, keine Daten zwischenspeichert und einen kleineren Head als TCP hat wird es zum Beispiel für Livestreams genutzt.
Was zeichnet ein Betriebssystem aus?
- verwaltet Hardware des Rechners (Arbeitsspeicher, Festplatten, Ein- und Ausgabegeräte)
- verwaltet auszuführende Programme
- regelt Zugriff auf Netzwerke
- regelt Zuteilung und Entzug von Betriebsmitteln (Speicher, Prozessor ...)
- regelt Unterbrechungsbehandlung
- Ablauf einer Zeitscheibe
- Ende einer Ein- oder Ausgabe
- Anforderung eines Systemdienstes
- Division durch Null ...
- erlaubt (quasi-) paralelle Ausfürhung von Programmen
- stellt Entwicklern eine Schnittstelle zur Benutzung der Hardware zur Verfügung
Was ist ein Kontext-Switch?
Bei einem Kontext-Switch wird der Kontext eines aktuellen Prozesses gespeichert, um ihn später wiederherzustellen. Ein anderer, gespeicherter Kontext wird geladen und ausgeführt.
Beschreiben Sie das Timesharing/Multitasking im Mehrprogrammbetrieb.
- Endgerät bearbeitet abwechseld mehrere Aufgaben (quasi-) parallel
- Jede Aufgabe erhält für bestimmte Zeit Prozessor, Hauptspeicher etc.
- Betriebssystem verdrängt Programm nach Ablauf einer bestimmten Zeit (Zeitscheibe)
- Zeitscheibe liegt zwischen 10 und 200 ms
- Dem Nutzer wird Parallelität vorgegaukelt
Was ist der Unterschied zwischen einem Programm und einem Prozess?
- Ein Programm ist eine statische Folge von Anweisungen (.exe, .elf ...)
- Ein Prozess ist eine dynamische Abfolge von Aktionen und Zuständsänderungen
- führt ein Programm auf einem Prozessor aus
- bestizt eignen Adressraum
- kann weitere Kind-Prozesse erstellen
- besitzt Anteile am virtuellen Speicher
Welche Aussagen lassen sich über die Parallelität von Netzwerkprogrammen treffen?
- Ein Endgerät kann seine Funktionalität durch Netzwerkzugriffe erweitern (Web Browser, E-Mail Client ...)
- Programme, die auf ein Netzwerk zugreifen laufen quasi parallel -> Ein Programm hat meherere Ausführungsfäden -> Threads
Was genau ist ein Thread?
- Ein Thread ist ein sequentieller Ausführungsfaden innerhalb eines Prozesses und gekennzeichnet durch.
- Anfangspunkt
- sequentiellen Ablauf
- Endpunkt
- Jeder Prozess erhält bei seiner Erzeugung einen Steuerungs-Thread, der weiter parallele Threads erzeugen kann
Wie kann Nebenläufigkeit bzw. Parallelität erzeugt werden?
- Multiprocessing
- Bei einem Kontext-Switch (Umschalten des OS von einem Prozess auf den nächsten) muss ein größerer Kontext neu geladen werden als beim Multithreading
- Beim Absturz eines Prozesses bleiben die anderen Prozesse unberührt
- Multithreading
- weniger Kontext
- Kontext-Switch günstiger
- Daten im Speicher sind dem Prozess zugeordnet
- Alle Threads innerhalb des Prozesses können auf die gleichen Daten zugreifen
Welche Zustände Kann ein Thread besitzen und wie werden diese mittels Java-Methoden aufgerufen?
Create - new Thread() - zu Zustand: ready
start() - zu Zustand: running - ruft run()-Methodedes neuen Objektes auf
run() - teilt Thread mit welche Anweisungen parallel ausgeführt werden sollen
sleep() - legt aktuellen Thread schlafen - zu Zustand: blocked
notify(), notifyAll() - weckt schlafende Threads wieder auf - zu Zustand: running
Sobald ein Thread abgearbeitet ist geht er in den Zustand terminated über
Wie kann es zu Konsistenzproblemen kommen und wie können diese vermieden/behoben werden?
Konsitenzprobleme können auftreten, wenn mehrere parallele Threads auf die selbe Variable zugreifen oder voneinander abhänige Threads einander überholen.
In diesen Fällen spricht man von kritischen Fehlern.
Lösung:
- deterministischer Ablauf (globale Ereignisse sind unabhänig von der Ablaufreihenfolge)
- Threads müssen durch Beeinflussung koordiniert werden
- wechselseitiger Ausschluss von Betriebsmitteln
- synchronisation (Threads werden in eine zeitliche Reihenfolge gebracht
Wann sind parallele Programme "korrekt"?
- sequentielle Programme sobald sie ein richtiges Ergebnis liefern
- parallele Programme wenn sie folgende Eigenschaften erfüllen:
- Sicherheit - begrenzte Anzahl an Threads im krit. Bereich & partiell korrekt
- Lebendigkeit - alle Zustände treten ein (überhaupt und endlich) - Deadlocks
Wie kann ein Deadlock entstehen?
- Circular-Wait
- Exclusive-User
- Hold-and-Wait
- No-Preemption
Was ist ein Monitor und mit welchem Schlüsselwort wird er in Java aufgerufen?
- ist eine Klasse, die Zugriff auf ihre Funktion durch mehrere Prozesse/Treads nur sequentiell erlaubt
- synchronisiert Zugriffe der Prozesse/Treads durch Ausschlussverfahren
- Wartende Prozesse/Treads in Warteschlange
- schützt Variablen vor direktem Zugriff
- übernimmt itialisierung der Variablen
- realisiert Synchronisation über Signalisierungsmechanismus wait() und signal()
- synchronized(this)
Wann und warum kann das Erzeuger/Verbraucher-Problem auftreten?
- Anforderungen
- ein Prozess/Thread erzeugt Daten und ein anderer verarbeitet die Daten
- Porzesse/Threads werden über gemeinsamen Puffer gekoppelt
- Erzeuger darf nicht in vollen Puffer schreiben
- Verbraucher darf nicht aus leerem Puffer lesen
- ausgetauschte Signale
- Wenn erzeugte Daten zur Verfügung stehen soll der Verbraucher ein Signal bekommen
- Wenn der Buffer leer ist, soll der Erzeuger ein Signal bekommen