• Shuffle
    Toggle On
    Toggle Off
  • Alphabetize
    Toggle On
    Toggle Off
  • Front First
    Toggle On
    Toggle Off
  • Both Sides
    Toggle On
    Toggle Off
  • Read
    Toggle On
    Toggle Off
Reading...
Front

Card Range To Study

through

image

Play button

image

Play button

image

Progress

1/222

Click to flip

Use LEFT and RIGHT arrow keys to navigate between flashcards;

Use UP and DOWN arrow keys to flip the card;

H to show hint;

A reads text to speech;

222 Cards in this Set

  • Front
  • Back
Aus welchen Teilen besteht ein Prozessor?
- ALU (Arithmetic Logic Unit, Operationswerk; führt Arithmetische und logische Operationen aus)
- Steuerwerk (Verbindet Operationswerk und Speicher bzw. das Ein-/Ausgabesystem)
Was ist der Befehlssatz? Nenne Beispiele
Menge aller Maschinenbefehle
Beispiele: IA-32, ARM, PowerPC, SPARC
Wie werden Befehle kodiert? Wodurch erlangen Sie bessere Lesbarkeit?
- Befehle werden als OP-CODE (Operation Code – kurz OPC) kodiert
- Zur besseren Lesbarkeit: symbolische Befehle (MNEMONICs)
Was sind Aufgaben des Betriebssystems?
- Betriebsmittelverwaltung (Speicher; Scheduling von Prozessen, Threads; Verarbeitung von System-Calls, senden von Interrupts)
- Sicherheitskonzepte (z. B. bei Mehrbenutzersystemen)
- Abstraktion durch Schichtenmodell
Aus welchen Worten setzt sich bit zusammen
<strong>B</strong>inary dig<strong>it</strong>
Was ist eine Byte und wie viele Kombinationsmöglichkeiten gibt es?
Gruppe von 8 bit

2<sup>8</sup> = 256
Was ist ein Nibble und wie viele Kombinationsmöglichkeiten gibt es?
Gruppe von 4 bit

2<sup>4</sup> = 16
Was ist ein Wort?
Eine Gruppe von 16, 32 oder 64 bit
Warum ist Basis 16 so interessant?
Da ein Nibble genau ein Hexadezimal Zeichen ist
Was ist Binary Coded Decimal BCD? Nenne ein Vor- und Nachteil
Kodiere jede Dezimalziffern in 4 Bit.

197 = 0001 1001 0111

- Rechenoperationen lassen sich einfach vom Dezimalsystem
übertragen
- Verbraucht jedoch mehr Bits als das standard Dualsystem
Vorteil und Nachteile der "Vorzeichen und Betrag" Darstellung
Vorteil:
- negative Zahlen können direkt dargestellt werden

Nachteile:
- Für die Null gibt es zwei verschiedene Darstellungen: 0000 0000 und 1000 0000
- Das Rechenwerk muss Zahlen mit und ohne Vorzeichen unterschiedlich verarbeiten
- Das Rechenwerk muss addieren und subtrahieren können
Was ist ein Komplement?
b-Komplement einer n-stelligen Zahl z ist z‘, mit z + z‘ = b<sup>n</sup>

Wobei b die Basis
Vorteil und Nachteil der Komplement Darstellung
Vorteile: Nur ein Addierer im Rechenwerk notwendig. Subtraktion wird auf Addition zurückgeführt
Nachteile: Zahlenbereich ist unsymmetrisch zu Null
Wie lautet die wissenschaftliche Notation von reellen Zahlen?
± <i>Mantisse</i> * <i>Basis</i><sup><i>Exponent</i></sup>
Wann gilt eine reelle Zahl in wissenschaftlicher Notation als normalisiert?
Wenn die Mantisse größergleich 1 und kleiner der Basis ist

1 <= m < b
Wie viele bit werden für Mantisse und Exponent bei Single bzw Double Precission des IEEE 754 Standards angegeben
Single Precision (32 bits)
1 bit Vorzeichen, 8 bits Exponent, 23 bits Mantisse

Double Precision (64 bits)
1 bit Vorzeichen, 11 bits Exponent, 52 bits Mantisse
Was hat es mit dem Bias des Exponenten auf sich?
Bias 127 wird auf Exponent aufaddiert, um auch negative Exponenten darstellen zu können

2<sup>3</sup> ist somit = 2<sup>130-127</sup>, also wird 130 binär gespeichert
Was ist die kleinste adressierbare Einheit?
Bytes
Wovon hängt die maximale Größe des Speichers ab?
Von der Länge der Adressen.

16 bit: 2<sup>16</sup> = 46 KiB
32 bit: 2<sup>32</sup> = 4069 MiB
64 bit: 2<sup>64</sup> = 16 777216 TiB
Wann gilt ein Speicherzugriff als "aligned"?
Wenn bei einem Wortzugriff die Adresse durch die Wortgröße teilbar ist.

Aligned = "an Wortgrenzen ausgerichtet"

- Gültige Adressen (16 Bit Wortgröße): 0x0, 0x2, 0x4, ...
- Gültige Adressen (32 Bit Wortgröße): 0x0, 0x4, 0x8, ...
Was geschieht bei einem "un-aligned" Speicherzugriff?
Es werden zwei Speicherabfragen durchgeführt.

Erst von einem Byte darunter, dann von einem Byte darüber und das Ergebnis wird entsprechend zusammengebaut.

Beispiel: 16 Bit Zugriff auf Adresse 0x03
– Lese 16 Bit von 0x02: [0x37 0x48]
– Lese 16 Bit von 0x04: [0x1F 0x77]
– Baue neues Wort: [0x48 0x1F]
Wofür stehen MSB and LSB?
<strong>MSB</strong>: Most Significant Byte (Byte welches die Ziffer mit dem höchsten Stellenwert repräsentiert)

<strong>LSB</strong>: Least Significant Byte (Byte welches die Ziffer mit dem niedrigsten Stellenwert repräsentiert)
Wo befindet sich MSB und LSB bei der Little Endian Speicherorganisation? Welche CPUs verwenden diese Strategie?
Weit verbreitet, INTEL-CPUs

MSB rechts, LSB links

Beispiel: Lese 16 Bit Wort von Adresse 02: 0x4837
Weit verbreitet, INTEL-CPUs

MSB rechts, LSB links

Beispiel: Lese 16 Bit Wort von Adresse 02: 0x4837
Wo befindet sich MSB und LSB bei der Big Endian Speicherorganisation? Welche CPUs verwenden diese Strategie?
MOTOROLA-CPUs

MSB links, LSB rechts

Beispiel: Lese 16 Bit Wort von Adresse 02: 0x3748
MOTOROLA-CPUs

MSB links, LSB rechts

Beispiel: Lese 16 Bit Wort von Adresse 02: 0x3748
Was ist der Vorteil von Little Endian?
Lesen des gleichen Wertes unabhängig von Wortlänge
Lesen des gleichen Wertes unabhängig von Wortlänge
Worin lassen sich Befehlssätze klassifizieren?
Hinsichtlich der Anzahl an Operationen:
- CISC (Complex Instruction Set Computer)
- RISC (Reduced Instruction Set Computer)
Was sind Eigenschaften eines CISC Befehlssatzes?
- Früher: Viele und komplexe Befehle
- Versuch, viele High-Level Funktionalitäten abzubilden (z. B. Funktionsaufrufe, Schleifen, Arrays, Stringverarbeitung)
- Kompakterer Assembler Code
- Höhere Produktivität beim Programmieren
- Befehle mit stark unterschiedlicher Ausführungszeit
- Beispiele: System/360, Motorola 68x, x86
Was sind Eigenschaften eines RISC Befehlssatzes?
- Wenige optimierte (Grund-)Befehle und Adressierungen
- "Load/Store Architektur", spezielle Befehle für Speicherzugriff
- Weitgehend identische Ausführungszeit der Befehle
- Ermöglicht effizienteres Pipelining („Fließbandverarbeitung“)
- Nachteile: Programme belegen mehr Speicher (mehr Befehle)
- Beispiele: PowerPC, SPARC, ARM (Android / iPad)
In welche Gruppen lassen sich Befehle anhand der Operandenzahl unterteilen?
- 1-Adressmaschine: ADD #5
- 2-Adressmaschine: ADD src, dst
- 3-Adressmaschine: ADD dst, src, src
Was ist der zentrale Unterschied zwischen der Harvard-Architektur und der von-Neumann-Architektur?
<strong>Harvard-Architektur</strong>: getrennter Programm- und Datenspeicher

<strong>von-Neumann-Architektur</strong>: Ein Speicher für Programme und Daten
Wofür steht MIPS und was sind zentrale Eigenschaften?
MIPS (Microprocessor without Interlocked Pipeline Stages)

- keine Locks zwischen den einzelnen Elementen der Pipeline
- RISC (Reduced Instruction Set Computer)
- häufig in eingebettet Systemen verwendet (Router, PlayStation, Kameras)
Welche Phasen der Befehlsausführung gibt es?
<strong>Instruction Fetch (Befehlsholphase)</strong>
Befehl, auf den PC zeigt aus dem Speicher in das Instuction Register laden, PC erhöhen
<strong>Instruction Decode (Befehlsdekodierung)</strong>
Befehl dekodieren
<strong>Instruction Execute (Befehlsausführung)</strong>
Befehlsausführung, eventuell PC aktualisieren (wegen Jumps)
Welche Register gibt es in der IA-32 Architektur?
- 8 General-purpose Register
- 6 Segment Register
- EFLAGS Register (program status and control), Status von z. B. arithmetischen Operationen
- EIP Register (instruction pointer), Zeigt auf die nächste auszuführende Operation
Wie lauten die Namen für die Register %eax, %ebx, %ecx und %edx?
%eax: Accumulator
%ebx: Base Register (für Array Operationen)
%ecx: Count Register (Für Laufvariablen)
%edx: Data Register (Spezialregister für mul, div und IO)
Wie lauten die Namen für die Register %esi, %edi, %esp und %ebp?
%esi: Source Index (Src Pointer bei String Operationen)
%edi: Destionation Index (Dest Pointer bei String Operationen)
%esp: Stack Pointer
%ebp: Frame/Base Pointer
Was befindet sich im EFLAGS Register?
- Informationen über den aktuellen Programmstatus
- Erlaubt eingeschränkte Steuerung der CPU
- CF Übertragsflag (Carry-Flag), PF Paritätsflag (Parity-Flag), ZF Nullflag (Zero-Flag), SF Vorzeichenflag (Sign-Flag), OF Überlaufflag (Overflow-Flag)
- Nutzen der Statusflags: Steuerung bedingter Sprünge
Welche zwei Formate für Assembler gibt es?
AT&T Syntax:
Befehl Quelle, Ziel (z.B. movl %edx, %eax)

Intel Syntax:
Befehl Ziel, Quelle (z.B. mov eax, edx)
Was ist die Postorder Darstellung?
Darstellungsweise der Abarbeitungsreihenfolge eines binären Baumes, der einen arithmetischen Ausdruck repräsentiert.

Zwischenergebnisse werden auf dem Stack gesichert
Was ist LR-Postorder
Darstellung der Abarbeitungsreihenfolge eines binären Baumes, bei den zuerst der linke Teilbaum aufgelöst, dann der rechte Teilbaum aufgelöst und dann mit der Operation in in der Wurzel fortgefahren word.
Was ist der Unterschied zwischen LR-Postorder und RL-Postorder? Welche Version ist besser?
Die Reihenfolge, in der die Unterbäume abgearbeitet werden:

LR-Postorder: Erst links, dann rechts
RL-Postorder: Erst rechts, dann links

Performance hängt stark vom Baum/Arithmetischen Ausdruck ab.
Mit welchem Befehl werden Unterprogramme aufgerufen? Was macht dieser zusätzlich?
Mit dem <code>call</code> Befehl. Er legt die Rücksprungadresse auf den Stack
Welche Register muss der Caller sichern, welche der Callee
Caller: %eax, %ecx, %edx, FPU Stack, SSE Register

Callee: %ebx, %esi, %edi
Was muss ein Unterprogramm in Assembler als erstes machen?
- Basepointer auf den Stack sichern
- Überschreiben des BasePointers mit dem aktuellen StackPointer
- Callee save Variablen sichern
- Speicher für lokale Variablen reservieren
Wie beendet sich ein Unterprogramm in Assembler korrekt?
- Speicher für lokale Variablen freigeben
- Callee save Variablen wiederherstellen
- Basepointer wiederherstellen
- <code>ret</code> Befehl ausführen
Welche Möglichkeiten für die Parameterübergabe an ein Unterprogramm gibt es in Hochsprachen?
<strong>Wertaufruf (Call by Value)</strong>
Wert wird auf den Stack gelegt

<strong>Referenzaufruf (Call by Reference)</strong>
Beispiel: Array mit 1000 Einträgen, Anfangsadresse auf den Stack
Welche Möglichkeiten für die Parameterübergabe an und von ein Unterprogramm gibt es in Assembler?
- Über Register
- Über Stack
Wo werden Gleitkomma-Arithmetiken ausgeführt?
In einer speziellen FPU (floating point unit), die heutzutage meist fest in die CPU integriert ist
Welche Register besitzt die x87 Floating Point Unit?
- 8 Gleitkomma-Datenregister (je 80 Bit breit)
- Control Register (Precision control, exception masking)
- Status Register
- Tag Register (valid, empty, zero, special)
- Opcode Register (11 Bits)
- LIP (last instruction pointer) Register
- LDP (last data pointer) Register
Wie sind die Datenregister der x87 FPU organisiert?
Als Stack. %ST(0) zeigt immer auf den Kopf des Stacks. Jede Operation muss den Kopf des Stacks betreffen (etwa %ST(1) und %ST(3) nicht zusammen als Operanden möglich)
Welche Inhalte sind im FPU Tag Register möglich?
Es werden zu jedem der 8 Datenregister in2 bit Informationen über den Inhalt gespeichert:

00 = valid
01 = zero
10 = special: invalid (NaN, unsupported), infinite
11 = empty
Was sind Anforderungen um paralleles Rechnen zu ermöglichen?
- Das Problem kann in Unterprobleme zerlegt werden, die parallel gelöst werden können
- Der Programmierer erstellt den Code in einer Weise, der das parallele Lösen der Probleme ermöglicht
Was sind Ziele parallelen Rechnens?
- Probleme schneller lösen
- Größere Probleme lösen
Welche Einteilungen nahm Flynn 1972 vor?
Flynn’s Taxonomie
Einteilung anhand von Parallelität von Daten und Operationen

Single Instruction, Single Data (SISD) (von Neuman-Architektur, Standard bei einem CPU/Kern)

Single Instruction, Multiple Data (SIMD) (Beispiel Vektor, mehrere Prozessoren)

Multiple Instruction, Single Data (MISD) (nicht gebräuchlich)

Multiple Instruction, Multiple Data (MIMD) (Beispiel Cluster)
Wofür steht SSE und was ist es?
SSE = Streaming SIMD Extension

Erweiterung des IA-32-Befehlssatz für Vektoroperationen auf mehreren Integers oder Gleitkommazahlen
Grenze MMX, SSE und AVX voneinander ab
<strong>MMX (Multimedia Extensions)</strong>
- Eingeführt 1993
- Nur Interegeroperationen
<strong>SSE (Streaming SIMD Extension, 1999)</strong>
- Gleitkommaoperationen mit einfacher Genauigkeit auf gepackten Daten
- ab SSE 2 – 2000 auch doppelte Genauigkeit
<strong>AVX (Advanced Vector Extensions, 2008)</strong>
- Erweiterung auf 256 Bit Register
Wie wirkt sich die Maske beim SSE Befehl shufps aus?
- Zwei Elemente des zweiten Operanden (%dst) werden in die unteren zwei Elemente des Zielregisters kopiert
- Zwei Elemente des ersten Operanden (%src) werden in die oberen zwei Elemente des Zielregisters kopiert
- Mask (8 Bit) gibt die Position des zu kopierenden Werts innerhalb der zwei Operanden an
Wie lautet der Dereferenzierungs-Operator in C
<code>*</code>
gibt den an der Adresse gespeicherten Wert zurück
Wie lautet der Operator in C, der die Adresse einer Variable zurückgibt (Referenzierungsoperator)?
<code>&</code>
gibt die Adresse zurück
Wer verarbeitet Makros und was ist eine Gefahr an Ihnen?
Der Präprozessor

Text wird einfach ersetzt, was zu unerwarteten Ergebnissen führen kann:

<code>#define MAX(a,b) a>b?a:b
int i = MAX(2,3)+5;
int j = MAX(3,2)+5;</code>
Wie löst man das Problem, dass eine aufzurufende Funktion immer bereits definiert sein muss, bei wechselseitiger Rekursion?
Mittels Forward-Deklaration, die die Signatur angibt. Die Definition/Implementierung kann später erfolgen.

<code>void func(int);
int func2(float, double);
// Definitionen
void func(int i){
// func2 ist oben zwar noch nicht definiert aber
// immerhin schonmal deklariert worden
func2(2.0f, 1.0);
}
int func2(float a, double c) {..}</code>
Wie viel Byte verbrauchen Pointer?
Pointer selbst verbrauchen immer
- 4 Byte auf einem 32 Bit-System
- 8 Byte auf einem 64 Bit-System
Was ist der Sinn von Header-Dateien?
Auslagern der Deklarationen in eine separate Datei

Einbinden überall dort, wo die Funktionen gebraucht
werden
Ein entscheidender Unterschied zwischen Klassen und Strukturen in C++
Default Sichtbarkeit von Attributen und Methoden
Klassen: private
Strukturen: public
Was muss eine Kindklasse im eigenen Konstruktur explizit aufrufen?
Den Konstruktor der Basisklasse
Was bewirkt das Schlüsselwort <code>virtual</code> in C++?
Das Schlüsselwort <code>virtual</code> kennzeichnet eine Methode, die in einer abgeleiteten Klasse redefiniert wird.

Signatur muss gleich sein, Auswahl der Methode zur Laufzeit
Welche zwei grundlegenden Phasen besitzt jeder Compiler?
<strong>Analyse-Phase (Compiler Front-End)</strong>
- Zerlegung des Quellprogramms in Bestandteile
- Erzeugung einer Zwischendarstellung des Quellprogramms
<strong>Synthese-Phase (Compiler Back-End)</strong>
- Konstruktion des Zielprogramms aus Zwischendarstellung
Welche sieben spezifischeren Phasen gibt es in einem Compiler und zu welcher grundlegenden Phase gehören Sie?
<ul>
<ol>Lexikalische Analyse (Scanner)</ol>
<ol>Syntaktische Analyse (Parser)</ol>
<ol>Semantische Analyse</ol>
<ol>Zwischencodegenerator</ol>
<ol>Maschinenunabhängige Codeoptimierung</ol>
<ol>Codegenerator</ol>
<ol>Maschinenabhängige Codeoptimierung</ol>
</ul>

Analysephase: 1 bis 3
Synthesephase: 4 bis 7
Was sind zwei weitere Aufgaben des Compilers?
<strong>Symboltabellenverwaltung</strong>
- Datenstruktur, die für jeden Bezeichner im Quellprogramm einen Record mit Feldern für zugehörige Attribute und Informationen enthält

<strong>Fehlerbehandlung</strong>
- Jeder Compiler-Schritt kann auf Fehler stoßen und muss diese
behandeln.
- Fortführung der Übersetzung bis möglichst alle Fehler im Quellprogramm entdeckt sind.
Was macht der Scanner bei der lexikalischen Analyse?
Zerlegung des Eingabequelltexts in Lexeme (bedeutungsvolle Sequenzen)

Jedes Lexem ergibt ein Token der Form <Tokenname, Attributwert>, welche in der syntaktischen Analyse verwendet werden
Wie ist ein Token der lexikalischen Analyse aufgebaut?
Token: <Tokenname, Attributwert>

Der Tokenname ist ein abstraktes Symbol: Wird während der Syntaxanalyse verwendet.

Zweite Komponente ist der Attributwert: Zeigt auf einen Eintrag in der Symboltabelle für dieses Token
Was macht der Parser mit dem Token-Stream?
Erstellt baumartige Zwischenstruktur
Bildet grammatische Struktur des Tokenstreams ab

Eine typische Darstellung ist ein Syntaxbaum
- Jeder Knoten steht für eine Operation
- Kindknoten sind Argumente dieser Operation
Was beachtet der Parser beim Erstellen eines Syntax-Baums?
Die Operator-Präzedenzen, mittels derer etwa die arithmetischen Konventionen (Punkt-vor-Strich) eingehalten werden.
Was geschieht im Rahmen der Semantische Analyse?
Prüft das Programm anhand des Syntaxbaums und der Symboltabelle auf semantische Konsistenz

Sammeln von Typinformationen und Durchführung einer Typüberprüfung: Prüfung, dass jeder Operator passende Operanden hat (richtiger Datentyp etc; fügt falls nötig eine Konvertierungsfunktion in den Syntaxbaum ein oder wirft Fehler)
Was macht die maschinenunabhängigen Codeoptimierung?
Verbesserung des im vorherigen Schritt erstellen Zwischencodes (effizienter, kürzer)

Beispiel: Unnötige "Variablen" im Zwischencode, Typ-Konvertierung von Konstanten zur Laufzeit, Elimination unbenutzten Codes
Was macht der Codegenerator?
Eingabe: (optimierter) Zwischencode aus vorherigen Schritten

Abbildung in Zielsprache, etwas Maschinensprache. Variablen werden Registern oder Arbeitsspeicherorten zugeordnet.
Grenze Syntax und Semantik voneinander ab
<strong>Syntax</strong>
„Struktur eines Programm?“ „Welche Zeichenfolgen sind erlaubt?“, hierarchische Zusammensetzung von Programmen aus strukturellen Komponenten, korrekte Form

<strong>Semantik</strong>
„Was bedeutet dieses Programm?“ „Welche Auswirkung hat die Ausführung des Programms auf einem Rechner?“, Ausführung bewirkt Zustandstransformationen einer (abstrakten) Maschine, Beschreibung der Bedeutung
Welches sind wichtige Aspekte eines Compilers?
<strong>Korrektheit</strong>
„Äquivalenz“ von Quellprogramm und Zielprogramm

<strong>Effizienz des erzeugten Codes</strong>
Maschinencode und/oder Speicherverwendung so effizient wie möglich

<strong>Effizienz des Übersetzers</strong>
Übersetzungsvorgang so schnell und/oder so speichereffizient wie
möglich
Was ist im Compilerbau ein Terminal?
Ein Terminalsymbol (auch Terminalzeichen oder kurz Terminal genannt) einer formalen Grammatik ist ein Symbol, das einzeln nicht weiter durch eine Produktionsregel ersetzt werden kann.
Was ist im Compilerbau ein Nichtterminal?
Ein Nichtterminalsymbol (auch Nichtterminal, Nonterminalsymbol oder Variable genannt) einer formalen Grammatik ist ein Symbol, das nicht in den endgültigen Wörtern vorkommt, die in der Grammatik erzeugt werden können. Nichtterminalsymbole kommen nur in Zwischenschritten einer Ableitung vor und werden durch das Anwenden von Regeln in der Grammatik nach und nach ersetzt, bis nur noch Terminalsymbole vorhanden sind.
Was ist im Compilerbau eine Produktion?
Eine Produktionsregel (auch Regel oder Produktion genannt) ist in der Theorie formaler Grammatiken eine Regel, die angibt, wie aus Wörtern durch eine Grammatik neue Wörter produziert werden.

Beispiel:
stmt → if (expr) stmt else stmt

Jedem Nichtterminal wird eine Menge von Terminalen und Nichtterminalen zugeordnet, die eine bestimmte Anordnung haben
Woraus besteht eine kontextfreie Grammatik?
<strong>Terminalen</strong> (auch Token gennant)
<strong>Nichtterminalen</strong> (auch syntaktische Variablen genannt)
<strong>Produktionen</strong> (bestehend aus Nichtterminal/linker Seite, einem Pfeil und einer Reihe von Terminal- und/oder Nichtterminalen, auch Rumpf oder rechte Seite genannt)
<strong>Ein Nichtterminal als Startsymbol</strong>
Was ist die Sprache einer Grammatik?
Menge der Terminalstrings, die von einem Startsymbol abgeleitet werden können, bilden die von der Grammatik definierte Sprache.
Was versteht man unter der Syntaxanalyse/Parsing?
Unter der Syntaxanalyse (Parsing) versteht man die Ableitung eines Strings von Terminalen vom Startsymbol der Grammatik aus.

Wenn dies nicht möglich ist, müssen Syntaxfehler innerhalb eines Strings angegeben werden.
Welche Eigenschaften hat ein Parse-Baum gemäß einer kontextfreien Grammatik auf?
- Die Wurzel wird mit dem Startsymbol beschriftet.
- Jedes Blatt wird mit einem Terminal oder mit ε beschriftet.
- Jeder innere Knoten wird mit einem Nichtterminal beschriftet.
- Wenn A als Nichtterminal einen inneren Knoten bezeichnet und die Kinder des Knotens von links nach rechts mit X<sub>1</sub>, X<sub>2</sub>, ..., X<sub>n</sub> bezeichnet werden, dann muss es die folgende Produktion geben: A -> X<sub>1</sub> X<sub>2</sub> ... X<sub>n</sub>
Wann liegt für einen gegebenen String eine Mehrdeutigkeit vor? Wie wird dieses Problem gelöst?

(Thema Compiler)
Wenn ein gegebener String von Terminalen von einer Grammatik unter Umständen durch mehrere Parse-Bäume generiert werden kann.

Lösung: Zusätzliche Regeln wie Assoziativität und Präzedenz von Operatoren
Welche zwei Arten der Syntaxanalyse gibt es? Welche ist beliebter, welchen Vorteil hat die andere?
<strong>Top-Down Methode</strong>
Beginn der Analyse an der Wurzel und dann in Richtung der Blätter. Beliebter, da einfach mit verfügbaren Methoden zu konstruieren.
<strong>Bottom-Up Methode</strong>
Beginn der Analyse an den Blättern und dann nach oben Richtung Wurzel. Vorteil: Kann größere Klassen von Grammatiken und Übersetzungsverfahren behandeln
Was hat e mit dem Lookahead-Symbol in der Top-Down Syntaxanalyse auf sich?
Das am weitesten links stehende Symbol (das Lookahead-Symbol) wird gelesen. Bisher ist lediglich die Wurzel bekannt. Der weitere Teil des Baumes muss so erstellt werden, dass er abgeleitet dem Eingabestring entspricht, der mit dem Lookahead-Symbol beginnt.
Suchen nach einer Produktion, die mit dem Lookahead-Symbol anfängt und entsprechend die Kind-Knoten erstellen. Anschließend wird das nächste Symbol angeschaut und mit dem nun zweiten Kindknoten vom links verglichen.
Welche Funktion übernimmt der Zwischencode bzw. die Zwischencode-Generierung?
Ergebnis des Compiler Front-Ends und Eingang für Compiler Back-End
Welche zwei Arten von Zwischencode-Repräsentationen gibt es?
- Bäume (einschl. Parse-Bäume) und (abstrakte) Syntaxbäume
- Lineare Darstellungen (insbesondere Drei-Adress-Code, welcher für echte Codeoptimierung benötigt wird)
Was ist eine Symboltabelle?
Datenstrukturen, in denen Informationen über Bezeichner gespeichert werden.

Diese Informationen werden der Tabelle hinzugefügt, wenn die Deklaration eines Bezeichners analysiert wird.

Eine semantische Aktion ruft Informationen aus der Symboltabelle ab.
Was ist ein wesentliches Problem der Code-Erzeugung?
Die Entscheidung, welche Werte in welchen Registern abgelegt werden sollen.

Ursache: Speicherhierarchie
(langsamer Hauptspeicher, schneller Registerspeicher)

Bei der Codeerzeugung muss auf eine optimale Zuweisung von Registern zu Variablen geachtet werden. Ist selbst bei Maschinen mit nur einem Register ggf. schwierig.
Welche Optimierungen werden unter anderem bei der Peephole Methode vorgenommen?
Beseitigung redundanter Befehle (z.B. redundanter Lade- und Speicherbefehle, unerreichbarer Code)

Optimierung des Kontrollflusses (überflüssige Sprünge beseitigen, Sprünge zum jmp Befehlen entfernen)

Algebraische Vereinfachung (Versuch Multiplikation mit 2 zu erzeugen, um günstigen shift durchführen zu können)
Welche Zwischendateien werden beim kompilieren erzeugt und was enthalten Sie?
<code>hello.c</code> Quellprogramm
<code>hello.i</code> Preprocessor, auflösen von #-Direktiven und einfügen von Includes
<code>hello.s</code> Compiler: Übersetzen in Assembler
<code>hello.o</code> Assembler: Aus ASM Befehlen wird ein Objekt...
<code>hello.c</code> Quellprogramm
<code>hello.i</code> Preprocessor, auflösen von #-Direktiven und einfügen von Includes
<code>hello.s</code> Compiler: Übersetzen in Assembler
<code>hello.o</code> Assembler: Aus ASM Befehlen wird ein Objektprogramm erzeugt, welches Maschinenbefehle enthält.
<code>hello</code> Linker: Kombinieren der verschiedenen Module, etwa printf (einfügen oder als Verweis auf Systembibliothek)
Was ist ein Assembler und welche zwei Sonderformen gibt es?
Ein Assembler ist ein Programm, das die Aufgabe hat, Assemblerbefehle in Maschinencode zu transformieren und dabei


Crossassembler: Assembler läuft auf einem Rechnersystem X, generiert aber Maschinencode für eine Plattform Y (Kommt sehr häufig im Bereich der Embedded Systems vor).
Disassembler: Übersetzung von Maschinensprache in Assemblersprache
Welche Aufgaben hat ein Lader?
- Objektdateien zusammenfügen
- Speicherplatz anfordern
- Adressen umrechnen und Objekt-Code laden
In welchen zwei Schritten arbeitet ein Assembler?
<strong>1. Schritt</strong>
- Auffinden von Speicherpositionen mit Marken, so dass Beziehungen zwischen symbolischen Namen und Adressen bei Übersetzung von Instruktionen bekannt sind.
- Übersetzung jedes Assemblerprogrammbefehls durch Kombination der numerischen Äquivalente der Opcodes, Registerbezeichner und Marken in eine legale Instruktion.
<strong>2. Schritt</strong>
Assembler erzeugt ein oder mehrere Objektdateien, die Maschinencode, Daten und Verwaltungsinformationen enthält. Eine Objektdatei ist meist nicht ausführbar, da im Allgemeinen auf Funktionen, Prozeduren oder Daten in anderen Dateien verwiesen wird.
Wieso muss der Assembler zwei-mal über den Code laufen?
Um vorwärts verweise von Markern auflösen zu können.
Assembler macht 2 Läufe (Two-pass) über das Programm
- 1-ter Lauf (Phase): Zuordnen von Maschinenadressen
- 2-ter Lauf (Phase): Erzeugen des Codes
Woher weiß Binder / Lader was zu tun ist?
Assembler muss Informationen dafür bereitstellen
⇒ Objekt-Datei enthält Einträge (records), die unterschiedliche Informationen für den Binder / Lader zur Verfügung stellen
Welche drei Formen von Objekt-Programmen gibt es?
- Relocatable object files (wird in der Regel generiert)
- Shared object files
- Executable object files
Womit beginnen ELF relocatable object files?
16-Byte Sequenz (ELF header)
- Wort-Größe
- Byte-Ordering (Little Endian, Big Endian)
- Weitere Informationen, die vom Binder (Linker) verarbeitet werden, z. B. Maschinentyp (IA32)
Was ist ein Binder/Linker?
Der Binder (engl. linker) hat die Aufgabe, aus einer Menge von einzelnen verschiebbaren Objekt-Files ein ausführbares Objektprogramm zu erzeugen, indem die noch offenen externen Referenzen aufgelöst werden.
Was ist ein Lader?
Ein Lader (engl. loader) ist ein Systemprogramm, das die Aufgabe hat, Objektprogramme in den Speicher zu laden und ggf. deren Ausführung anzustoßen.
Dazu wird das Objektprogramm in den Speicher kopiert.
Was ist der unterschied zwischen statischem und dynamischem Binden zur Laufzeit?
<strong>Statisches Binden (static binding)</strong>
Bibliothekscode wird dupliziert, Nachteil: Jeder Prozess belegt Speicher für Standardfunktionen wie printf
<strong>Dynamisches Binden (dynamic binding)</strong>
Lader übernimmt das Einbinden externen Referenzen
Vorteile: externe Module können von mehreren Programmen gemeinsam genutzt werden; geänderte Modulversionen werden beachtet, da erst zur Ladezeit gebunden wird; nur benötigte Module werden geladen
Nachteil: Modul muss bei jeder Ausführung geladen werden, Fehler beim Fehlen von Modulen
Welche drei Varianten des Ladevorgangs gibt es?
- absolutes Laden (Absolute Loading)
- relatives Laden (Relocatable Loading)
- dynamisches Laden zur Laufzeit (Dynamic Run-Time Loading)
Was ist absolutes Laden und was sind Vor- und Nachteile?
Das Programmmodul enthält absolute Speicheradressen; muss immer an die gleiche Position im Hauptspeicher geladen werden
Vorteil:
- das Laden geht schnell

Nachteile
- Der Programmierer bzw. Übersetzer muss selbst festlegen, wo die einzelnen Module im Hauptspeicher liegen werden.
- Ändert sich die Lage einer Variablen im Modul, so müssen alle Adressreferenzen auf diese Variable angepasst werden.
- Für moderne Betriebssysteme nicht mehr geeignet.
Was ist relatives Laden und was sind Vor- und Nachteile?
Das Programmodul enthält Adressen, die relativ zum Modulanfang sind. Der Loader modifiziert dann beim Laden alle modulinternen Adressen, indem er den Wert der Startadresse des Moduls im Hauptspeicher auf die Adressen addiert ->Erzeugung absoluter Adressen

Vorteil
Ein Programmmodul kann an eine beliebige Stelle im Hauptspeicher geladen werden.

Nachteile
Das Programm kann zur Laufzeit nicht mehr umgeladen werden (Nötig wenn Programm aus Platzgründen temporär aus dem Speicher müssen)
Was ist Dynamisches Laden zur Laufzeit und was sind Vor- und Nachteile?
- Module oder Teile von Modulen können zur Laufzeit des Programms geladen werden
- Das Berechnen absoluter Adressen wird zur Laufzeit durchgeführt, also nicht während des Ladevorgangs

Vorteile
- Es werden nur die tatsächlich benötigten Module geladen.
- Die Speicherverwaltung wird für das Betriebssystem sehr flexibel.
Nachteile
- Adressberechnung muss zur Laufzeit durchgeführt werden.
- Effiziente Programmausführung kann nur durch eine entsprechende Hardware-Unterstützung erreicht werden.
Was sind denkbare Leistungsmaße für die Bewertung des Leistung eines Rechner(systems)?
- Antwortzeiten
- Durchsatz
- Ausführungszeiten
Was ist der Unterschied zwischen Antwortzeit und Ausführungszeit?
Antwortzeit: Zeit, die real vergeht, bis eine gegebene Aufgabe vom Rechner gelöst wurde. (Ungeeignet für Prozessorvergleich)

Ausführungszeit: Zeit, die die CPU bei der Lösung der Aufgabe benötigt ohne Ein-/Ausgabe und Zeit für andere Aufgaben
In welcher Beziehung stehen Taktzykluszeit und Taktfrequenz?
Taktfrequenz (clock rate, z.B. 2GHz) = Inverse der Taktzykluszeit (z.B. 0.5 ns)
Taktfrequenz (clock rate, z.B. 2GHz) = Inverse der Taktzykluszeit (z.B. 0.5 ns)
Was ist der Unterschied zwischen Eintaktimplementierung und Mehrtaktimplementierung?
<strong>Eintaktimplementierung</strong>
- Ein Takt pro Instruktion (d.h. alle Instruktionen haben gleiche Taktzykluslänge)
- ineffizient, da die Ausführungszeit durch die am längsten dauernde Instruktion bestimmt wird

<strong>Mehrtaktimplementierung</strong>
- pro Instruktion mehrere, aber kürzere Taktzyklen
- Anzahl der Taktzyklen pro Instruktion ergibt die clock cycles per instruction (CPI)
Wie errechnet sich die Ausführungszeit eines Programms?
Welche Größen können Performanzindikatoren sein?
- # Taktzyklen für Programmausführung
- # Instruktionen des Programms
- # Taktzyklen pro Sekunde
- durchschnittliche # Taktzyklen pro Instruktion
- durchschnittliche # Instruktionen pro Sekunde
Warum gibt es für Floating Point Operationen ein eigenes Performanzemaß?
- In vielen Anwendungsbereichen ist die Leistung bei Floating Point-Berechnungen entscheidend, z.B. physikalische Simulationen
- Performanz von Floating Point-Befehlen lässt sich nicht unbedingt aus der allgemeinen Performanz ableiten.
Was sind Benchmarks und was ist die Grundidee dahinter?
Grundidee: Bemessung der Leistung von Computern anhand der Programme, die auch tatsächlich ausgeführt werden sollen!

Benchmarks sind repräsentative Programme, die auf den zu vergleichenden Rechnern ausgeführt werden.
Der Rechner ist der Leistungsfähigste, auf dem die Benchmarks am schnellsten ausgeführt werden.
Welche vier Typen von Benchmarks gibt es?
Reale Programme
Kernels
Toy Benchmarks
Synthetische Benchmarks
Welche drei explizit nutzbaren Speicher gibt es?
Interner Prozessorspeicher
Hauptspeicher
Sekundärspeicher
Welche zwei transparenten Speicher gibt es eventuell in der Speicherhierarchie?
Register
Prozessoren verfügen üblicherweise über eine bestimmte Menge von Registern, auf die ein Maschinenprogramm nicht zugreifen kann

Cache-Speicher
Pufferspeicher, Geschwindigkeits- und Größenunterschiede zwischen den oben genannten Speicherkomponenten ausgleichen, Beispielsweise Cache zwischen Haupt- und Sekundärspeicher
Was sind Kenngrößen für Speicher?
<strong>Zugriffszeit</strong>: durchschnittliche Zeit, um ein Wort aus dem Speicher zu lesen

<strong>Zykluszeit</strong>: minimale Zeit zwischen zwei Speicherzugriffen – Hier spielt neben der Zugriffszeit auch das Busprotokoll eine Rolle

<strong>Bandbreite (Datenübertragungsrate):</strong> maximale Datenmenge, die pro Sekunde übertragen werden kann, gemessen in Byte/sec
Nach welchen Zugriffsverfahren können Speicher klassifiziert werden?
<strong>Wahlweiser Zugriff (Random Access)</strong>
- Register
- Cache-Speicher
- Hauptspeicher

<strong>Serieller Zugriff</strong>
- Festplatte
- OptischePlatten
- Magnetband
Wie können Speicher bezüglich der Änderbarkeit der Daten klassifiziert werden?
<strong>Read – only:</strong>
- Der Speicher kann ausschließlich gelesen werden
- Ein Überschreiben ist nicht möglich
Halbleiterspeicher, dessen Inhalt beim Produktionsprozess festgelegt wird

<strong>Read – write:</strong>
- Inhalt kann während des Betriebs geändert werden
RAM, Festplatte, CD-RW, DVD-RW

<strong>Read – mostly</strong>
PROM Halbleiterspeicher
Wie können Speicher bezüglich der Permanenz klassifiziert werden?
<strong>Flüchtige Speicher</strong>
Inhalt geht bei Stromausfall verloren
- Dynamische Speicher (Um Informationsverlust zu vermeiden, muss die Spannung periodisch erneuert werden (Refreshing))
- Statische Speicher
<strong>Nicht flüchtige Speicher</strong>
Welche zwei Arten der Lokalität gibt es?
<strong>Zeitliche (temporale) Lokalität</strong>
Nach Zugriff auf einen bestimmten Datensatz wird mit großer
Wahrscheinlichkeit bald erneut darauf zugegriffen Beispiel: Schleifen

<strong>Räumliche Lokalität</strong>
Nach dem Zugriff auf einen bestimmten Datensatz wird mit großer Wahrscheinlichkeit auch auf einen Datensatz zugegriffen, der in unmittelbarer Nähe im Speicher steht.
Beispiel: sequentielle Instruktionsfolgen (ohne Sprünge), Reihungen, Matrizen
Was ist die zentrale Idee der Speicherhierarchie?
- Ein schnellerer und kleinerer Speicher auf dem Level k fungiert als Cache für einen langsameren und größeren Speicher auf dem Level k + 1

- Lokalitätsprinzip für eine sinnvolle Nutzung der Speicherhier- archie notwendig
Was ist ein Cache Hit, was ein Cache Miss?
Anfrage des Programms ein ein Objekt d:

Cache Hit: wenn d in dem Cache auf Level k gefunden wird

Cache Miss: wenn d in dem Cache auf Level k nicht gefunden. Die Daten d werden aus dem entsprechenden Block auf Level k+1 geholt
Welche Regeln gibt es, zu entscheiden, welcher Block im Cache überschrieben werden soll?
Zufallsersetzung
Least-recently used (LRU)
Wie ist ein Cache organisiert?
<ul>
<li>Der Cache ist als Feld organisiert, auch Set genannt S = 2<sup>s</sup>
<li>Jedes Set enthält E sogenannte Cache Lines</li>
<li>Jede Cache Line enthält</li>
<ul><li>einen Datenblock B = 2<sup>b</sup> Bytes</li>
<li>ein Valid Bit</li>
<li>eine Anzahl von Tag Bits</li></ul>
</li>
</ul>
Welche Arten von Caches gibt es?
Direct-Mapped Caches (Cache mit einer Cache Line (E = 1) pro Set)

Vollassoziativer Cache

Satzassoziativer Cache
Welche zwei Verfahren im Zusammenhang mit Cache Coherence gibt es?
<strong>Write-Through</strong>
Der Wert wird bei jedem Schreibzugriff auf den Cache auch
gleich in den Hauptspeicher geschrieben
<strong>Write-Back</strong>
Der Wert wird erst dann in den Hauptspeicher kopiert, wenn ein Cache Miss ihn aus dem Cache verdrängt
Was ist ein Nachteil des Direct-Mapped Cache?
Durch das direkte Mapping können Daten verdrängt werden, obwohl auf dem Cache noch viele Cache Lines frei sind
Beim nächsten Lesezugriff könnte das Datum gebraucht werden
Was ist das Prinzip des Vollassoziativer Cache und was ist ein zentraler Nachteil?
Ein Block kann an eine beliebige Position im Cache-Speicher geschrieben werden.

Nachteil: Alle Einträge im Cache müssen durchsucht werden um einen bestimmten Block zu finden
Was ist das Prinzip eines Satzassoziativen Cache?
Ein n-fach satzassoziativer Cache besteht aus einer
Menge von Sätzen, die aus jeweils n Blöcken bestehen

Ein satzassoziativer Cache mit n Positionen für einen Block wird als n-fach satzassoziativer Cache bezeichnet
Welcher Zusammenhang besteht zwischen direktabbildendem Cache, Vollassoziativem und Satzassoziativem?
Gegeben ein Cache mit 8 Blöcken: ein achtfach satzassoziativer Cache ist dasselbe wie ein vollassoziativer Cache.

Ein direkt abbildender Cache entspricht einem einfachen satzassoziativen Cache.
Welche Kenngrößen lassen eine Bewertung der Güte eines Cache zu?
Trefferrate/Fehlerrate bzw. Fehltrefferrate
Trefferzeit/Fehlstrafzeit
Nach welchen Ursachen lassen sich Fehlzugriffe auf den Cache klassifizieren?
<strong>Compulsory misses:</strong>
Fehler bei erstem Zugriffs auf einen Block, der noch nie im Cache war (Kaltstart-Fehler)

<strong>Capacity misses:</strong>
Fehlzugriff, weil der Speicher wegen Größenbeschränkung nicht alle vom Programm verwendeten Blöcke aufnehmen kann. Blöcke werden ausgelagert und später wieder angefordert.

<strong>Conflict misses:</strong>
In direkt abgebildeten oder mengen- assoziativen Speichern konkurrieren Blöcke um dieselbe Blockposition.
Was ist ein Nachteil eines Einbus-Systems? Was ist die Lösung dieses Nachteils?
Nur ein Datentransport zu einer Zeit, Busgeschwindigkeit wird durch die Länge und kapazitive Last beschränkt.

Lösung: Hierarchisches Mehrbussystem
Welches sind die zwei zentralen Konzepte, um zu Erfahren, wann eine etwa an die FPU abgegebene Berechnung fertig ist?
<strong>Polling:</strong>
Der Prozessor fragt laufend aktiv ab, ob die Berechnung beendet ist.
<strong>Interrupt:</strong>
Die FPU meldet sich (unterbricht den Prozessor), wenn die Berechnung fertig ist.
Was ist DMA und wen entlastet es?
<strong>Direct Memory Access</strong>
Bei Übertragung großer Datenmengen von Speicher auf Peripheriegerät müssen nicht die Daten erst in den CPU gelesen werden um dann ans Zielgerät übertragen zu werden.

Die CPU ist an dem Datentransfer nicht beteiligt und kann andere Aufgaben erledigen.
Der Bus nur einmal (und nicht zweimal) belegt wird.
Welche Signale werden auf dem Steuerbus gesendet?
Signale Steuern den Zugriff auf den Datenbus zu Steuern:

<i>BR/BRQ</si>: Bus Request/Busanforderung 􏰃 <i>BG/BGT</i>: Bus Grant/Busbewilligung
Was passiert, wenn mehrere Geräte als Master an den Bus angeschlossen sind?
Sie werden hintereinander (Daisy Chain) an die BGT Signalleitung geschaltet (Prioritätenkette).

Bus wird mit MBRQ angefordert. CPU koppelte sich ab und gibt BGT an den ersten Master der Kette. Entweder dieser nutzt Ihn und signalisiert dies durch BBUSY, oder er gibt die Erlaubnis an den nächsten der Kette weiter.
Was sind Vor- und Nachteile vom daisy chaining von Bus-Mastern?
<strong>Vorteile</strong>:
- wenige Signalleitungen
- dezentrale einfache Logik
- weitere Master leicht anschließbar

<strong>Nachteile</strong>:
- Priorisierungszeit von Kettenlaufzeit abhängig => Bus-Totzeiten
- Aushungerung von Mastern niedriger Priorität
Was ist eine alternative Systemstruktur und welche Laufzeit eliminiert sie im Vergleich zum Daisy Chaining?
Zentraler Busarbiter
-Kettenlaufzeit kann eliminiert werden
Zentraler Busarbiter
-Kettenlaufzeit kann eliminiert werden
Aus welchen vier Grundkomponenten besteht eine Festplatte?
- Aufzeichnende Oberfläche (Recording Surface)
- Lese-/Schreibkopf (Read/Write Heads)
- Stellmotor (Transport mechanism)
- Controller (Control electronics)
Wie ist die Oberfläche einer Festplatten-Platte strukturiert?
- kreisförmig angeordneten Sequenzen von Magnetfeldern = <strong>Spur (Track)</strong>
- Jede Spur ist in eine Anzahl von Sektoren fester Länge unterteilt. Ein Sektor hat z. B. 512 Byte.
- Im jedem Sektor sind etwa 15% Verwaltungsdaten, wie die <strong>Präambel</strong>, welcher zur Synchronisation dient, ein <strong>Fehlerkorrekturcode</strong> am Ende des Sektors und zwischen zwei Sektoren die <strong>Zwischensektor-Lücke</strong>.
Was hat es mit Zonen auf der Plattenoberfläche einer Festplatte auf sich?
Ursprünglich gleiche und feste Anzahl Sektoren je Spur:
- Konstante Winkelgeschwindigkeit aber unterschiedliche Umfänge der Spuren.
- Variable Kreisgeschwindigkeit
- Weiter außen liegenden Sektoren sind gestreckt
- In den Anfängen setzte man am Innenradius der Festplatte die größtmögliche Speicherdichte an und streckte die äußeren Sektoren.
=> Gleiche Lesetechnik trotz unterschiedlicher
Kreisgeschwindigkeiten

Heute wird die Scheibe von innen nach außen in Zonen unterteilt.
- Jede Zone enthält mehrere Spuren sowie eine unterschiedliche Zahl von Sektoren.
- Auf den inneren Zonen liegen weniger Sektoren, auf den äußeren entsprechend mehr.
- Die Länge eines Sektors bleibt dadurch weitgehend gleich.
Welche zwei Techniken zur Platzierung der Bits gibt es?
<strong>Longitudinal Recording:</strong> Die Dipole werden waagerecht in die magnetisierbare Schicht eingebracht.
<strong>Perpendicular Recording (PMR):</strong> Die Dipole werden senkrecht in die magnetisierbare Schicht eingebracht. Wird heute aufgrund der Platzersparnis verwendet.
Von welchen drei Größen hängt die Zugriffszeit auf einen Sektor ab?
<strong>Such-Zeit (Seek Time)</strong>
Zeit um den Arm zum entsprechenden Ziel-Sektor zu bewegen.
<strong>Rotations-Latenz (Rotational Latency</strong>
ggf. bis zu einer Umdrehung
<strong>Übertragungs-Zeit (Transfer Time)</strong>
Zeit, um einen Sektor zu lesen
􏰄 hängt ab von Rotationsgeschwindigkeit
Welche Anforderungen gibt es an einen Code (Binare Darstellungsform)?
- Umkehrbar ⇒ eindeutig
- Codierung leicht realisierbar (Verarbeitungsgeschwindigkeit)
- Geringe Wortlänge
- Ordnungsrelation (für Sortierung)
- Einfache Realisierung arithmetischer Operationen
- Erkennen und Korrektur von (Übertragungs-)Fehlern
- Unterscheidung von Zahlen größer/kleiner 5 (Rundung)
- Unterscheidung gerader/ungerader Zahlen
Nenne bekannte Kodierungsformen
- BCD-Code
- Aiken-Code
- 2-aus-5-Code
- 1-aus-10-Ring-Code
- Gray-Code (geringere Messunsicherheit)
Was ist die Fano-Bedingung im Bezug auf Kodierung? Was ist ein Nachteil an Kodierungen, die die Bedingung erfüllen?
Kein Codewort ist Präfix (Anfangsstück) eines anderen Codeworts (präfixfrei).

Nachteil: Hohe Wortlänge
Welche Varianten zur Komprimierung eines Codes gibt es?
- Lauflängenkodierung (Run Length Encoding)
- Wörterbuch-Kompression
- Huffman-Codierung
- Arithmetische Kodierung
Wie erkennt das Paritätsbit Fehler?
Beispiel: 7 bit Kodierung
Bit 8 durch XOR-Schaltung erzeugt: Paritätsbit
- Genau dann =1, wenn an 7 Eingängen ungerade Zahl von Einsen
- Kodierung hat immer gerade Zahl von Einsen (even parity)
- Alternativ: Paritätsbit für ungerade Zahl von Einsen (odd parity)

<i>Erkennt nur Fehler bei denen eine ungerade Anzahl Bits falsch sind. Eine Korrektur ist nicht möglich</i>
Wie kann das Verfahren mit Paritätsbit verbessert werden?
<strong>Längs- und Querparität</strong>
Verbesserung Parity Bit-Verfahren durch weitere Prüfbits

Ein fehlerhaftes Bit kann identifiziert und korrigiert werden
<strong>Längs- und Querparität</strong>
Verbesserung Parity Bit-Verfahren durch weitere Prüfbits

Ein fehlerhaftes Bit kann identifiziert und korrigiert werden
Welche Fehler erkennen die Paritätsbit Verfahren nicht zuverlässig? Was ist ein Lösungsverfahren?
Mehrbitfehler, die in der Kommunikation häufig vorkommen.

Lösung: Cyclic Redundancy Checksum (CRC) Verfahren
Was ist der Hammingabstand?
<strong>Hammingabstand (Hammingdistanz) d</strong>
- Anzahl der Bitpositionen, an denen sich zwei Wörter eines Alphabets mindestens unterscheiden
- d Einzelbit-Fehler, um ein Wort in ein anderes zu überführen
- Berechnung: Bilde Exklusives Oder (XOR), zähle Einsen in Resultat
- Beispiel: 1001101 XOR 0011101 = 1010000 d = 2
Was ist eine Datei?
Eine Datei (file, data set) ist eine Menge von Daten die persistent gespeichert werden
- Dateien überdauern das Terminieren von Prozessen, durch die sie erzeugt wurden
- Zusammenfassung von Daten geschieht unter bestimmten Gesichtspunkten
- Daten in der Datei werden für bestimmte Aufgaben auf bestimmte Weise verarbeitet
- Zugriffsmethode wird in den Begriff der Datei mit einbezogen
Was sind Aufgaben eines Dateisystems?
- Verwaltung des Speicherplatzes auf externen Datenträgern
- Organisierung von Dateien
- Bereitstellung von Funktionen für das Laden, Speichern und Ändern von Dateien => System-Calls
Welche zwei Möglichkeiten zur Spezifikation eines Dateinamens gibt es?
Absolute Pfadnamen
Beispiel: /usr/ast/mailbox

Relative Pfadnamen ⇒ Konzept des Arbeitsverzeichnisses
Setzen einer Umgebungsvariablen path, des absoluten Pfades
Was ist der Sektor 0 einer Festplatte?
MBR (Master Boot Record)
An dessen Ende steht die Partitionstabelle, welche die Anfangs- und Endadressen der Partitionen enthält
Aus welchen Blöcken besteht eine Partition?
1. Boot Block
2. Super Block
3. Free Space Management
4. I-Nodes
5. Root directory
6. Files and Directories
Welche Struktur haben Massenspeicher üblicherweise aus Sicht eines Betriebssystems?
Wie wird dies effizienter gemacht?
Massenspeicher haben üblicherweise Blockstruktur
- D.h. für Betriebssystem ist die Festplatte eine große Ebene von nummerierten Blöcken

- Größe meist 512 Byte

- Aus effizienzgründen oft Cluster mit 8 oder mehr Blöcken
Was ist die einfachste Art, Dateien auf Plattenblöcke aufzuteilen und was sind Vor- und Nachteil?
Verwaltung der Datenblöcke einer Datei als zusammenhängende Folge von Plattenblöcken (Run)

Vorteil:
Einfach zu implementieren (Adresse des ersten Blocks + Länge der Datei reicht)

Nachteil:
Fragmentierung
Wie lässt sich Fragmentierung vermeiden?
Was ist ein Nachteil dieser direkten Lösung?
Indem Dateien als verkettete Listen von Plattenblöcken gespeichert werden.
Erstes Wort eines Blockes wird als Verweis auf nächsten Block interpretiert

Nachteil: Iteration über verkettete Liste, also wahlfreier Zugriff ist langsam
Wie lässt sich das Problem des langsamen wahlfreien Zugriffs beim Speichern von Dateien als verkettete Liste von Plattenblöcken, vermeiden?
Verzeigerung nicht in jedem Block => Extra Tabelle, die File Allocation Table (FAT)
Wie ist eine FAT aufgebaut?
- Pro Plattenblock ein Eintrag in Tabelle
- Eintrag wird über Blocknummer indexiert
- Verzeichnis-Eintrag: Blocknummer des ersten Blocks
- FAT-Eintrag verweist auf nächsten Block bzw. Cluster
Was sind Vor- und Nachteile einer FAT, was ist eine Lösung?
<strong>Vorteile</strong>
- Datenblöcke werden voll ausgenutzt
- Random Access auf Blöcke ist möglich <strong>Hauptnachteil</strong>
- Bei einer 200 GB Festplatte und einer Blockgröße von 1 KB benötigt die Tabelle 200 Millionen Einträge
- Jeder der 200 Millionen Einträge belegt mindestens 3 Bytes (ggf. 4 Bytes) (vgl. [Tan09, S. 339])
- 600 MB des Arbeitsspeichers belegt (bzw. 800 MB)
- Schlussfolgerung: Für große Festplatten nicht benutzbar

Lösung: I-Nodes (viele kleine statt einer großen Tabelle, nicht alle sind im Speicher)
Welche zwei Methoden gibt es, Dateien vor unrechtmäßigen Zugriffen zu schützen?
- Zugriffskontrolllisten (ACLs)
- Capabilities
Wie funktionieren Zugriffskontrolllisten (ACLs)?
- listenartig organisierte Datenstruktur
- jedem Objekt (hier Datei) ist eine ACL zugeordnet
- Jeder Listeneintrag identifiziert: ein Subjekt und die Rechte, die das Subjekt an dem Objekt besitzt
- Häufig: Wild Cards als Platzhalter verwendbar z.B. (*,stud,r)
- Zugriffskontrolllisten sind Datei-Attribute
z.B. in Unix z.B. in i-node (Dateideskriptor) verwaltet
Wie funktionieren Capabilities zur Dateizugriffsverwaltung?
- unverfälschtes Ticket: besteht aus Name, Rechten
Ticket wird vom BS-Kern ausgestellt
Besitz berechtigt zum Zugriff auf das im Ticket benannte Objekt
- Zeilenweises Implementierung der Zugriffsmatrix
jedem Subjekt wird eine Capabilityliste zugeordnet
Liste enthält Paare: (Objekt_Identifikator, Zugriffsrechte)
Was sind Vor- und Nachteil von Capabilities?
<strong>Vorteile</strong>
- Einfache Bestimmung der Subjekt – Rechte
- Einfache Zugriffskontrolle: nur noch Ticketkontrolle!<strong>Nachteile</strong>
- Rechterücknahme schwierig, Kopien suchen
- keine Subjekt-Ticket Kopplung, Besitz berechtigt automatisch zur Wahrnehmung der Rechte
- Objekt-Sicht auf Rechte schwierig: wer darf was!
- in der einfachen Ausprägung ungeeignet für verteilte Umgebungen
In welche Kategorien lässt sich die Speicherverwendung bei MIMD Operationen einteilen?
<strong>Symmetrischer Multiprozessor (SMP)</strong>
- Ein gemeinsame Verbindung zum Speicher, skaliert schlecht, Beschränkt durch verfügbare Bandbreite
<strong>Nonuniform Memory Access (NUMA)</strong>
<strong>Distributed Memory</strong>
- Jeder Prozess hat einen separaten Adressraum
<strong>Grids</strong>
- Systeme, die verteilte heterogene Ressourcen verwenden
Wie ist Parallelität definiert?
Arbeitsabläufe bzw. deren Einzelschritte werden als parallel bezeichnet, wenn sie gleichzeitig <strong>und </strong>voneinander unabhängig durchgeführt werden können.
Wie ist Nebenläufigkeit definiert?
- Unter Nebenläufigkeit versteht man die Möglichkeit, mehrere Arbeitsabläufe voneinander unabhängig, also nacheinander oder parallel, durchführen zu können.
- Für zwei nebenläufige Vorgänge A und B spielt es also keine Rolle, ob erst A und dann B, oder erst B und dann A oder A und B zur gleichen Zeit (also parallel) ausgeführt werden.
Was ist Granularity (Granularität) im Hinblick von Parallelität?
- Der Begriff der Granularität bzw. Körnigkeit wird differenziert in
grobkörnige, mittelkörnige und feinkörnige Parallelität.
- Auf der Ebene der Programm-, Prozess- und Blockebene wird häufig von grobkörniger Parallelität gesprochen, während die Anweisungsebene als feinkörnige Parallelität bezeichnet wird.
- Der Begriff beschreibt das Verhältnis zwischen Rechenaufwand und Kommunikations- bzw. Synchronisationsaufwand.
- SSE vs. Prozess?
- In vielen Fällen auch Freiheiten bei Wahl der Granularität
Was ist ein Task im Hinblick auf Parallele Programmierung
?
- Liste von Instruktionen, die als Gruppe zusammengefasst werden
können
- Der erste Schritt zur Parallelisierung ist typischerweise, das Problem in nebenläufige Tasks zu unterteilen
- Beispiele für das 4. Praktikum (Ray Casting): Schnitt eines Strahls mit einem einzelnen Primitiv in der Szene, Schnitt eines Strahls mit der ganzen Szene, Bestimmung des ersten Schnittpunkts, komplette Berechnung des Farbwertes eines Pixels, komplette Berechnung einer Zeile im Ausgabebild
- Definition eines Tasks hängt davon ab, wie der Programmierer das Problem untergliedert (siehe auch Granularität)
Was ist eine Unit of Execution (UE) im Hinblick auf Parallele Programmierung
?
- Ein Task wird einer Unit of Execution zugewiesen
- UE kann ein Prozess oder ein Thread sein; Heute oft auch noch “leichtgewichtige Threads” verfügbar, z.B. in massiv- parallelen Systemen (CUDA, OpenCL, ...)
Was ist ein Processing Element (PE) im Hinblick auf Parallele Programmierung
?
- Generischer Ausdruck für die Hardwareeinheit, die einen Strom von Instruktionen ausführt
- Z.B. ein Prozessor, einen Workstation, ...
Was ist ein Deadlock?
zyklische Abhängigkeit von Tasks untereinander, bei der die Tasks blockieren und gegenseitig aufeinander warten
 (siehe Beispiel Erzeuger / Verbraucherproblem)
- endlose Blockierung
- einfach zu debuggen, da das Programm genau an der Stelle des Deadlocks anhält
Was ist eine Race Condition?
- Fehler (oder Effekt), der nur in parallelen Programmen auftreten kann
- Ergebnis des Programms hängt von der Reihenfolge ab, in der nebenläufige Teile tatsächlich abgearbeitet werden.
- Verschiedene Programmläufe desselben Programms auf demselben System führen zu unterschiedlichen Ergebnissen.
- Debugging kann extrem schwierig sein, da sich Race Conditions nicht zuverlässig reproduzieren lassen.
Wie berechnet sich der relative Speedup?
S(P) = T<sub>total</sub>(1) / T<sub>total</sub>(P)
Wie berechnet sich die Effizienz eines Speedups?
E(P) = S(P) / P = T<sub>total</sub>(1) / (P*T<sub>total</sub>(P))
Wie berechnet sich die Serial Fraction γ?
γ = (T<sub>setup</sub> + T<sub>finalization</sub>) / T<sub>total</sub>(1)

damit ist Anteil der Laufzeit, der parallelisiert werden kann (1 - γ)
γ = (T<sub>setup</sub> + T<sub>finalization</sub>) / T<sub>total</sub>(1)

damit ist Anteil der Laufzeit, der parallelisiert werden kann (1 - γ)
Wie lautet die Formel für den relativen Speedup nach Amdahl?
Amdahl’s Law

Für P gegen unendlich geht S(P) gegen 1/γ (maximal erreichbarer Speedup)
Amdahl’s Law

Für P gegen unendlich geht S(P) gegen 1/γ (maximal erreichbarer Speedup)
Was ist das Anforderungsprofil beim Rendering (Bilderzeugung) an Grafikkarten?
Wie zeigt sich dies im Verhältnis Transistoren zu Cache?
Eine GPU ist auf rechenintensive, hochgradig datenparallele Berechnungen ausgelegt

Beim CPU sind wesentlich weniger ALUs pro Cache. In einer Grafikkarte ist der Cache im Verhältnis zur Anzahl der ALUs klein.
Eine GPU ist auf rechenintensive, hochgradig datenparallele Berechnungen ausgelegt

Beim CPU sind wesentlich weniger ALUs pro Cache. In einer Grafikkarte ist der Cache im Verhältnis zur Anzahl der ALUs klein.
Was ist OpenCL?
Open Computing Language

Offener Standard zur parallelen und plattform-unabhängigen Programmierung bzw. Berechnung

Abstraktes Modell zur hardwareunabhängigen Implementierung von massiv parallelen Algorithmen

Ursprünglich von Apple entwickelt, heute durch Konsortium verwaltet
Was ist ein Work-Item, was eine Work-Group bei paralleler Berechnung mit OpenCL?
Work-Item (CUDA thread)
- Wird von einem Processing Element (PE) ausgeführt

Work-Group (CUDA block)
- Gruppe von Work-Items
- Werden zusammen auf einem Compute Device ausgeführt
- gemeinsam genutzter lokaler Speicher
- Synchronization zwischen Items in einer Work-Group möglich
Auf welche vier Speicherregionen haben Work-Items zugriff?
<strong>Global Memory (__global)</strong>
Work-Items können jedes Element lesen/schreiben
<strong>Constant Memory (__constant)</strong>
Teil des Global Memory, der während der Ausführung des Kernel nicht verändert wird
<strong>Local Memory (__local)</strong>
Gemeinsamer Speicher einer Work-Group, nur sehr begrenzt verfügbar!
<strong>Private Memory</strong>
Geschützter Bereich für jeweils ein Work-Item, etwa Register
Welche Arten von Parallelität unterstützt das OpenCL Execution Model?
<strong>Daten-Parallelität</strong>
- Viele Instanzen führen den gleichen Kernel-Code aus und bearbeiten jeweils unterschiedliche Eingabedaten (SIMD)
- Anwendung: normaler Kernel-Aufruf, eine Queue
<strong>Task-Parallelität</strong>
- Verschiedene Kernel werden parallel ausgeführt (SPMD)
- Anwendung: mehrere Kernel-Aufrufe in separaten Queues
Welche Bereiche werden von OpenCL im Vergleich zum C Standard nicht unterstützt, welche sind zusätzlich vorhanden?
Kein Support für Funktionspointer, Rekursion, Arrays variabler Länge, Bitfelder und Gleitkommazahlen mit doppelter Genauigkeit

<strong>Zusätzliche Spracherweiterungen</strong>
- Work-Items und Work-Groups
- Vektor Typen und Operationen (floatn, intn, ...)
- Synchronization
Definition eines Datenverarbeitungssystems nach DIN 44300
Ein Datenverarbeitungssystem ist eine Funktionseinheit zur Verarbeitung und Aufbewahrung von Daten. Verarbeitung umfaßt die Durchführung mathematischer, umformender, übertragender und speichernder Operationen.
Welche drei Komponenten muss ein Rechnersystem besitzen?
- Ein <strong>Prozessor</strong> (Zentraleinheit, Central Processing Unit, CPU), der Programme ausführen kann
- Ein <strong>Speicher</strong> der Programme und Daten enthält (Speichersystem)
- Eine Möglichkeit, zum Transferieren von Informationen (Zwischen Speicher und Prozessor sowie der Außenwelt (<strong>Ein-/Ausgabesystem, I/O)</strong>)
Was ist ein Prozess?
Betriebssystemkonzept zur Repräsentation eines
Programms in der Ausführung

Mehrere Programme können nebenläufig ausgeführt werden
Betriebssystem vermittelt Illusion der alleinigen Ressourcen Verwendung
Welche zwei Eigenschaften haben Zwischendarstellungen (Compiler)?
- Einfach zu erstellen
- Unkompliziert auf Zielmaschine zu übersetzen
Eigenschafen von Drei-Adress-Code
- Zwischendarstellung für abstrakte Maschine (ähnlich Assembler)
- Jeder Befehl besteht aus einer Zuweisung und maximal einem Operator auf der rechten Seite
- Temporäre Namen werden angelegt, um berechnete Werte festzuhalten
Welche zwei Varianten des Random-Access Memory (RAM) gibt es?
- Statisches RAM (SRAM)
- Dynamisches RAM (DRAM)

SRAM ist schneller (und deutlich teurer) als DRAM, daher SRAM als Cache und DRAM als Hauptspeicher
Aus welchen Teilen besteht eine traditionelle Grafikkarten Pipeline?
Applikation -> Geometrie (Dreiecke) -> Rasterisierung (inkl. Viewport Clipping)
Wie werden Work Items ausgeführt, wo Work Groups?
Work-Item wird auf einem Prozessor ausgeführt

Work-Group wird auf einem Multiprozessor ausgeführt

Ein Multiprozessor besteht aus mehreren Prozessoren (alle führen die gleiche Instruktion auf verschiedenen Daten aus, SIMD)
Wann ist ein Algorithmus "Embarassingly Parallel"?
Ein task-paralleler Algorithmus ist “embarassingly parallel”, wenn alle Tasks voneinander komplett unabhängig sind
Welche zwei Probleme bestanden an der ersten Version der Reduktions-Implementation?
Divergenz (immer weniger WorkItems werden genutzt)

Bankkonflikte (Speicherzugriff muss sequenziert werden, da Zugriff auf gleiche Speicherbank)
Best Practice für parallele Algorithmus Implementationen?
- <strong>Datentransfer</strong> zwischen host- und device-memory <strong>minimieren</strong> oder verschränken
- Zugriff auf local memory sollte so designed werden, dass <strong>keine Bankkonflikte</strong> auftreten
- Local memory kann verwendet werden um <strong>redundante Zugriffe auf global memory</strong> zu vermeiden (Cache)
Wie ist eine Parallel Random Access Machine aufgebaut?
Ausführung ist synchron (ein Befehl pro Zeiteinheit auf jedem PE)

Prozessoren können verschiedene Programme ausführen (und damit auch verschiedene Operationen zu jedem Zeitschritt) -> MIMD
Ausführung ist synchron (ein Befehl pro Zeiteinheit auf jedem PE)

Prozessoren können verschiedene Programme ausführen (und damit auch verschiedene Operationen zu jedem Zeitschritt) -> MIMD
Wie wird gleichzeitiger Zugriff auf den Speicher geregelt?
- exclusive write, exclusive read (EREW)
- concurrent read, exclusive write (CREW)
- concurrent read, concurrent write (CRCW)
Welche Möglichkeiten zum Lösen von Konflikten bei gleichzeitigem schreibendem Zugriff auf eine Speicherzelle gibt es?
<strong>weak</strong>
es darf nur ein bestimmter Wert gleichzeitig geschrieben werden (z.B. 0)
<strong>common</strong>
alle gleichzeitigen Schreibvorgänge müssen denselben Wert schreiben
<strong>arbitrary</strong>
nur einer der gleichzeitig geschriebenen Werte wird gespeichert, die anderen gehen verloren
<strong>priority</strong>
der vom Prozessor mit der höchsten Priorität geschriebene Wert (basierend auf der Prozessor ID) wird geschrieben
<strong>combining</strong>
gleichzeitig geschriebene Werte werden kombiniert und gespeichert (z.B. bitweises MAX)
Was sind die zwei wesentlichen Abstraktionen des PRAM Models?
1. Die PEs arbeiten synchron unter der Kontrolle einer
gemeinsamen Uhr
2. Alle Prozessoren können auf den gemeinsamen Speicher zugreifen
Welche zwei Ausprägungen eines Verbindungsnetzwerkes gibt es innerhalb eines
Parallelrechners?
- Kopplung von Prozessoren, Speichern und I/O-Einheiten
- Kopplung mehrerer Knoten, wobei jeder Knoten aus Prozessor, Speicher und I/O-Einheiten besteht
Welches sind Kriterien zur Charakterisierung eines Verbindungsnetzwerks?
- Skalierbarkeit (die Eigenschaft, ein Verbindungsnetzwerk (modular) zu erweitern.)
- Blockierungsverhalten (inwiefern sind gegebenenfalls Einschränkungen auf bestehende Verbindungen durch andere Verbindungen zu erwarten)
- Kosten
- räumliche Ausdehnung
- Fehlertoleranz
Was ist der unterschied zwischen statischen und dynamischen Verbindungsnetzwerken?
<strong>Statische Netzwerke</strong> sind feste Punkt zu Punkt Verbindungen der Prozessoren

<strong>Dynamische Netzwerke</strong> enthalten Schaltelemente, die durch Konfigurationsinformationen eine bestimmte Verbindung herstellen können
Welche zwei Arten von Verbindungsarten in Verbindungsnetzwerken werden unterschieden?
Die <strong>Leitungsvermittlung</strong> ist eine physikalische Verbindung und erfordert einen Leitungsaufbau, die Übertragung der Daten und einen Leitungsabbau.

Die <strong>Paketvermittlung</strong> übergibt einen Datenblock (Paket) an das Verbindungsnetz, welches das Paket über wechselnde Routen zum Ziel transportiert.
Bewertungskriterien für Übertragungsmedien
- Bandbreite
- Verzögerung
- Kosten
- Aufwand zur Installation bzw. Instandhaltung
Nenne drei heute in Benutzung befindliche kabelgebundene Übertragsungsmedien
- Twisted Pair (Telefondraht)
- Koaxialkabel
- Lichtwellenleiter
Nach welchen Kriterien werden Betriebssysteme entwickelt?
- Zuverlässigkeit (Dependability)
- Benutzerfreundlichkeit (User-friendliness)
- Wartbarkeit und Flexibilität (Maintainability, Flexibility)
- Leistungsfähigkeit (Performance)
- Kosten (Costs)
Eine grobe Unterbrechungsklassifikation nach Ereignisursache
- Programmbezogene Unterbrechungen
- Systembezogene Unterbrechungen
- Maschinenfehler
Welche Betriebsarten (processing modes) eines OS gibt es in Bezug auf die Systemumgebung und ihrer Aufgabenstellung?
- Stapelbetrieb (traditionelle Betriebsart, verarbeitungs- und datenintensiven Aufgaben)
- interaktiver Betrieb (Dialogbetrieb)
- Echtzeitbetrieb (Hard/Soft)
Nach welchen Kriterien kann die Betriebsarten (processing modes) eines OS unterschieden werden?
- Systemumgebung und ihrer Aufgabenstellung
- Benutzeranzahl
- Eingriffsmöglichkeiten des Benutzers (On- oder OffLine)
- Programmierbarkeit des Systems durch den Benutzer
- Programm-/Speicherorganisation (Ein oder Mehrprogrammbetrieb)
- Programm-/Prozessororganisation (Time-Sharing?)
Welche Betriebsarten (processing modes) eines OS gibt es in Bezug auf die Eingriffsmöglichkeiten des Benutzers?
- Off-Line-Betrieb
- On-Line-Betrieb
Was ist ein Prozess, was ist ein Thread?
<strong>Prozess:</strong> Ausführung eines sequentiellen Programms auf einem Prozessor in einer eigenen Umgebung (Prozess != Programm)

<strong>Thread:</strong> Ausführung eines sequentiellen Programms auf einem Prozessor in einer Umgebung, die evtl. mit mehreren Threads
geteilt wird
Welche Zustände kann ein Prozess haben?
- new: Der Prozess wird/wurde gerade erzeugt
- running: Befehle werden ausgeführt
- waiting: Der Prozess wartet darauf, dass ein Ereignis eintritt
- ready: Der Prozess wartet darauf, dass er einem Prozessor zugewiesen wird
- terminated: Die Prozessausführung wurde beendet
Welche Basismechanismen zur Realisierung u. a. von gegenseitigem Ausschluss gibt es?
- Unterbrechungssperren
- Atomare Speicheroperationen
- Spezielle Hardware-Befehle
Kriterien für gutes Scheduling?
- Effizienz (bestmögliche Auslastung)
- Durchsatz (Jobs/Zeit)
- Fairness
Welche Scheduling Verfahren gibt es?
<strong>Nicht unterbrechende (non preemptive, run to completion)</strong>
- FCFS / FIFO
- Shortest Job First
- kooperatives Multi-Tasking
<strong>Unterbrechende Strategien (preemptive)</strong>
- Zeitscheiben-Strategie (Round-Robin)
- Prioritäten (ankommende Jobs mit höherer als die des laufenden Unterbrechen diesen)
Welche drei Zustände können VP haben?
VP = Virtual pages

- Nicht allokiert/nicht alloziert (nicht zugeordnet)
- Cached
- Uncached
Woraus besteht ein PTE?
PTE: Page Table Entry

- Valid Bit (auch Present Bit)
- Adressfeld
- Zusätzliche Verwaltungsinfos wie read only, ReadWrite