Concurrent & Distributed Systems Flashcards
(47 cards)
Aus welchen Teileinheiten besteht ein Prozessor? Erkläre diese.
Steuerwerk - Steuerung der Programmausführung
ALU (Arithmetisch-Logische Einheit, Rechenwerk) - führt Berechnungen durch für Dinge in Registern
(Allgemeine) Register: Schneller Zwischenspeicher von Daten
Spezielle Register:
Befehlszähler (BZ): Zeigt auf aktuellen Befehl im Speicher
Befehlsregister (BR): Zwischenspeicher für aktuellen Befehl
Statusregister (SR): Abspeichern von charakteristischen Eigenschaften des Ergebnisses der letzten ALU-Operation
Was verarbeitet ein Prozessor?
Der Prozessor verarbeitet die einzelnen Befehle eines Befehlssatzes (Menge der Maschinenbefehle) - diese enthalten meist einen Opcode und einen oder mehrere Operanden
Was ist der Von-Neumann-Zyklus? Erkläre diesen näher.
= Prinzip der sequentiellen Programmausführung
1) Fetch –> hol nächsten Befehl aus dem Speicher entsprechend der Adresse im Befehlszähler
2) Decode –> Befehl wird durch Steuerwerk in Schaltinstruktionen für das Rechenwerk aufgelöst
3) Fetch Operands -> schaut sich Operanden an, holt dese aus dem Hauptspeicher (Operanden = Parameter)
4) Execute -> Operation wird ausgeführt
5) Write Back -> Wenn notwendig, wird Ergebnis der Berechnung in den Hauptspeicher zurückgeschrieben
Was sind Vor- und Nachteile der Von-Neumann-Architektur?
+ Streng sequentieller Ablauf vereinfacht Programmierung
- Daten- und Adressbus werden zum Engpass (Bottleneck) zwischen Prozessor und Speicher (wenn Bus nicht schnell genug ist, kommt es zu Performance-Problemen - immer nur eine Sache auf einmal)
Was besagt Moore’s Law?
Verdopplung der Transistorzahl alle 18 Monate, also dass sich die Komplexität der CPUs verdoppelt alle 18 Monate
Was sind die Grenzen der Leistungssteigerung?
Taktraten der CPUs können nicht beliebig erhöht werden (kleine physikalische Größen von Systemen)
CPU <–> Arbeitsspeicher Bandbreite ist begrenzt (RAM kann mit Geschwindigkeit der CPUs nicht mithalten)
Wie sind Prozessoren mit mehreren Kernen aufgebaut?
= Mikroprozessoren mit mehreren vollständigen CPUs - jeder Kern hat eine eigene ALU und einen eigenen individuellen Speicher, was die Parallelisierung der Programmausführung erleichtert
Wie sieht die Speicherhierarchie in modernen Computern aus?
Register - 300 ps (1 KB)
L1 Cache - 1 ns (64 KB)
L2 Cache - 3 - 10 ns (256 KB)
L3 Cache - 10 - 20 ns (2 - 4 MB)
Arbeitsspeicher - 50 - 100 ns (4 - 64 GB)
Hauptspeicher - 5 - 10 ms (4 - 16 TB)
Was sind Cache-Lines?
Wenn Daten aus dem Speicher geholt werden, dann in Form von Cache-Lines - diese halten 64 Byte und holen immer diese Größe von Daten: wenn man Matrizen z.B. Zeilenweise einliest, so ist dies viel schneller als wenn man diese spaltenweise einliest
Was ist Concurrency (Nebenläufigkeit)?
Es werden mehrere Aufgaben gleichzeitig ausgeführt, aber ein Kern führt mehrere Tasks gleichzeitig durch (Multitasking)
Was ist Parallele Verarbeitung?
Ein Rechner mit einer parallelen Architektur kann Operationen gleichzeitig auf mehrere Haupt- oder Grafikprozessoren durchführen
Was ist Shared Memory?
= Geteilter Speicher
Alle Kerne haben Zugriff auf den selben gemeinsamen Speicher
Was ist Distributed Memory?
Alle Kerne haben ihren eigenen lokalen Speicher und sind über ein Kommunikationsnetzwerk (Interconnet) miteinander verbunden
Was ist Amdahls Law? Wie lautet die Formel?
Das Gesetz wird im Bereich des parallelen Rechnen benutzt zur Festlegung der theoretisch maximal erreichbren Speedups
Jedes Problem hat einen sequentiellen Anteil, der nicht parallelisiert werden kann - ist der sequentielle Anteil 0, ist das Problem vollständig parallel ausführbar -> der parallel auführbare Anteil des Problem ergibt sich aus (1 - f)
Die gesamte Laufzeit des Algorithmus ergibt sich aus dem sequentiellen Anteil plus dem parallelen Anteil
Formel:
Speedup = 1 / (f + (1 - f) / p)
f = sequentieller Anteil
p = Anzahl der Prozessoren
Welche Kritik gibt es an Amdahls Law?
Effekte durch Caches in der CPU bleiben unberücksichtigt
Problemgröße verändert sich nicht
Zu welchem Problemen kann es bei der Parallelisierung kommen?
Kommunikation zwischen Prozessen ist ein Problem
Race Condition: Bug, wenn Operationen zeitlich abhängig von anderen Threads sind und das Ergebnis einer Operation beeinflussen (zeitliche Ausführung kann bei Threads nicht garantiert werden)
Data Race: Zwei Threads greifen zur selben Zeit auf gleiche Daten zu und verändern diese
Deadlock / Verklemmung: Zwei Prozesse warten gegenseitig auf ein Ergebnis vom anderen Prozess und es kommt zu einem Stillstand
Was bedeutet thread-safety?
Ein Programm oder eine Methode ist thread-sicher, wenn es keine Unbestimmtkeit gegenüber irgendeinem Multithreading Szenario aufweist.
Wie kann ein Data Race gelöst werden?
Mit Sperrsynchronisation mitteln Locking
Was ist ein Prozess? Was enthält ein Prozess?
Führt ein Programm auf einem Prozessor aus (Instanz vom Programm) - wird vom Betriebssystem erzeugt und besitzt eigenen Speicherbereich für Programmcode, statische und dynamische Daten als auch einen eigenen Stack
Was gehört zu einem Prozess?
(Virtueller) Adressraum (Heap, Stack)
Prozesskontext (CPU Register, Zugriffsrechte)
Daten (Prozessspezifische Daten)
Identität (pid = process id, uid = user id, gid = group id)
Was ist ein Stack? Was speichert dieser?
Ein Speicherbereich im virtuellen Adressraum (LIFO)
Lokale Variablen, Funktionsparameter, Rückgabewerte und Rücksprungadressen
Was ist der Heap? Was speichert dieser?
Beim Heap muss Speicher explizit angefordert werden (new)
Anlegen und freigeben von Objekten ist langsam - Daten auf dem Heap können global zugegriffen werden (shared memory)
Statische Variablen landen immer am Heap
Was ist ein Thread?
= Sequentieller Ausführungspfad innerhalb eines Prozesses mit minimalen eigenem Kontext (CPU-Registersatz, Stack, Identifikationsnummer, Priorität…)
Alle Threads eines Prozesses benutzten denselben Adressraum sowie weitere Betriebsmittel des Prozesses gemeinsam
Außerhalb von Prozessen gibt es keine Threads - jeder Thread braucht seinen eigenen Stack
Welche Zustände kann ein Prozess annehmen?
Bereit - Prozess ist bereit und hat alle Daten, die er braucht; muss nur mehr einer CPU zugewiesen werden
Aktiv - Prozess / Thread hat einen Prozessor zugeteilt bekommen
Blockiert - Prozess / Thread wartet auf ein Ergebnis
Suspended - Prozess / Thread wurde aufgehalten
Warum wird ein Prozess suspendiert? Kurzfristige Überlastung, Benutzer will Prozess stoppen, kein virtueller Speicher mehr frei
Zombie - Zwischenzustand bevor ein Prozess das System verlässt (Prozess hat Aufgabe erledigt und muss nur noch einen Status an seinen Vaterprozess liefern)