Vorlesung
1. Alles ist eins – außer der Null
Themen: Syllabus. Geschichtlicher Hintergrund. Zahlen- und Stellenwertsysteme. Binärsystem. Schaltungen und Wertetabellen. Logische Gatter. Halbaddierer und Addierer. Gatterverzögerung. Transistoren.
2. Struktur von Computersystemen und HW/SW-Schnittstellen
Themen: Hardware- und Softwareebenen. Literatur. Computeraufbau. Funktionsweise einer Maus als motivierendes Querschnitts-Beispiel für Hardware, Zustände, Schnittstellen, Datenübertragung, Berechnungen und Anzeige.
3. Minimierung und Endliche Automaten
Themen: Logikfunktionen und Boolesche Algebra. Minterme. Normalformen. Schaltungssynthese. Minimierung (algebraisch, KV-Diagramme, Quine-McCluskey-Algorithmus). Schaltwerke. Latches. Flipflops. Endliche Automaten (Moore und Mealy). Zeitdiagramme.
4. Rechnerarithmetik
Themen: Stellenwertsysteme. Oktal- und Hexadezimalzahlen. Ganze Zahlen im Einerkomplement, Zweierkomplement und Exzess-Code. Wertebereiche. Fest- und Gleitkommazahlen. Zeichendarstellung in ASCII, ISO-Latin-1 und Unicode.
5. Speicher
Themen: Arbeitsspeicher: Statisch und Dynamisch, Adressierung, Entwurfsziele. Performance-Lücke. Speicherhierarchie. Lokalität. Caches: Funktionsweise, Aufbau, Organisationsformen, Schreibverfahren, Ebenen, Austauschverfahren.
6. Von Bits zu Prozessoren
Themen: Wiederholung: Endliche Automaten, Kombinatorische Logik, Volladdierer, Multiplexer, Register. RISC-V als Prozessorarchitektur. Übersetzung von Hochsprachen in Assembler: Instruktionen, Direktiven, Pseudoinstruktionen, Kontrollfluss. Datenpfad eines RISC-V-Prozessors. Steuerwerk. Instruktionsaufbau mit Opcodes, Immediates, Registern, Formaten.
7. Von Pipelines und Kontrollpfaden
Themen: Wiederholung: RISC-Prozessorstruktur, Register, Programmzähler, Speicher, Instruktionsaufbau. Datenpfad einer Immediate-Instruktion. Steuerwerk: Multiplexer, Schreibsteuerung. Pipelining: Grundprinzip, Stufen, erweiterter Datenpfad, Konflikte. Prozessor-Performance: Latenz, Durchsatz, Zyklen pro Instruktion.
8. Ein- und Ausgabe
Themen: Ein- und Ausgabegeräte: Schnittstellen, Busse, Controller, I/O-Register. Beispiele: Tastatur, Grafikkarte, IDE-Festplatte, Ethernet. Character vs. Block Devices vs. Beschleuniger. Exceptions vs. Traps vs. Interrupts. Interrupts bei RISC-V: CLINT, PLIC, CSRs, mcause. Adressräume. Interrupts vs. Direct Memory Access vs. Polling bei Gerätetreibern. Betriebssystemaufgaben. Unix-API für Gerätezugriff: Everything is a file, Abstraktionen, Systemaufrufe, Gerätetreiber. Serielle und parallele Datenübertragung. UARTs und RS232.
9. Vom Programm zum Prozess
Themen: Schritte der Quellcode-Übersetzung. Präprozessor. Compiler: Lexikalische Analyse, Syntaxanalyse, Semantische Analyse, Codeerzeugung, Codeoptimierung. Assembler: Speichersektionen und -layout, Heap und Stack. Linker. Loader. ELF-Dateien und -sektionen. Funktionen bei RISC-V: Registerkonventionen, Stackstruktur, RÜcksprung, Label. Ausblick auf Betriebssysteme.
10. Hardware-/Software-Schnittstellen
Themen: Isolation als Sicherheitsmechanismus. Adressräume. Systemaufrufe. Privilegienmodi in RISC-V.
11. Prozesse und das Betriebssystem
Themen: Interaktion mit dem Betriebssystem. C-Standardbibliothek. Prozesse: Process Control Block, Zustände. Zuteilungsstrategien: First-Come First-Served, Round Robin, Shortest Process Next. Systemaufrufe fork, _exit, getpid, execve, …. Besondere Prozesse: Init, Orphans, Zombies.
12. Ressourcen und Synchronisation
Themen: Wiederholung: Zuteilungsstrategien: First-Come First-Served, Round Robin, Shortest Process Next. fork, exec und vfork. Prozesse, Threads und Fibres. Race Conditions. Synchronisation. Kritischer Abschnitt. Lockvariablen. Deaktivieren von Interrupts. Atomare Instruktionen. Aktives vs. passives Warten.
13. Semaphore und Sicherheit
Themen: Passives Warten. Semaphore. Einfache vs. ressourcenorientierte Synchronisation. Leser-Schreiber-Problem. Deadlocks: Bedingungen, Ressourcenallokationsgraph, Dining Philosophers, Verhinderung, Erkennung, Auflösung. Livelocks. Sicherheit: Funktional vs. aus IT-Sicherheitsperspektive. Viren, Würmer, Trojaner, Rootkits, Phishing, Pharming. Zugriffsrechte. Principle of Least Privilege. Separation of Concerns. Zugriffmatrix, Access Control Lists, Capabilities. Unix-Zugriffsrechte.
14. Persistente Speicherung: Dateisysteme
Themen: Hintergrundspeicher. Dateiabstraktionen. Dateizugriffe. Unix Virtual File System: Switch, Mounting. Dateispeicherung: Zusammenhängend vs. verkettete Listen. FAT: Funktionsweise, Probleme, Fragmentierung. Indexierter Speicher. Inodes: Struktur, Diskussion. Freispeicherverwaltung. Verzeichnisverwaltung: Listen, Hashfunktionen. Anwendungsbeispiele: Unix System V, Berkeley Fast File System, ext2/3/4.
15. Virtueller Speicher
Themen: Virtueller Speicher als Konzept. Memory Panagement Unit. Paging. Seitenfehler. Ersetzungsstrategien: First-In First-Out, Optimal, Least Recently Used, Second Chance. Seitentabelleneinträge. Einstufige und mehrstufige Tabellen. Adressübersetzung. Translation Lookaside Buffer. Adressen in RISC-V.
16. Cachekohärenz und Speicherkonsistenzmodelle
Themen: Mehrprozessorsysteme. Cachekohärenz. Write Propagation und Write Serialization. "Single-Write Multiple-Reader"-Invariante. "Data Value"-Invariante. "Write Through"- und "Write Back"-Caches. Kohärenzprotokolle: Snooping- vs. verzeichnisbasiert, invalidierungs- vs. updatebasiert. MSI-Protokoll. MESI-Protokoll. Speicherkonsistenz: Sequenzielle Konsistenz und Total Store Order. Store Buffer. Data Races.
17. Kommunikation: Interprozesskommunikation und Netzwerke
Themen: Interprozesskommunikation (IPC). Shared Memory. Message Passing: Synchron vs. asynchron, direkte vs. indirekte vs. Gruppenadressierung, Nachrichtenformat, Übertragungsarten. Unix-Signale. Unix-Pipes. Internet-Kommunikation: HTTP, URLs DNS, TCP/IP-Sockets, Remote Procedure Calls.