Anmelden
Computerarchitektur und Betriebssysteme
Inhaltsverzeichnis
Computerarchitektur und Betriebssysteme
1
Motivation
1.1
Hinweise für Studierende
1.2
Hinweise für Experten
1.3
Copyright
2
Computerarchitektur
2.1
Vom Anwender zur digitalen Schaltung
2.1.1
Erstmal aufschrauben
2.1.2
Von-Neumann-Rechner
2.1.2.1
Von-Neumann-Architektur
2.1.2.2
Von-Neumann-Flaschenhals
2.1.3
Komponenten eines Von-Neumann-Rechners
2.1.3.1
Zentraleinheit / CPU
2.1.3.1.1
Steuerwerk / Leitwerk
2.1.3.1.2
Rechenwerk
2.1.3.2
Speicherwerk
2.1.3.3
Ein- / Ausgabewerk
2.1.3.4
Gesamtbild eines Von-Neumann-Rechners
2.1.3.5
Von-Neumann-Zyklus
2.1.3.6
Animation der Zusammenarbeit
2.1.4
Eigenschaften eines Von-Neumann-Rechners
2.1.5
Digitale Schaltungen
2.1.5.1
Aufbau und Arbeitsweise eines Registers
2.1.5.2
Aufbau und Arbeitsweise des Speicherwerks
2.1.5.3
Aufbau und Arbeitsweise der ALU
2.1.5.4
Aufbau und Arbeitsweise eines Busses
2.1.6
Gatter
2.2
Prozessoren und ihre Befehle
2.2.1
Vom Quellcode zum Prozessor
2.2.2
Befehlssatz
2.2.3
Befehlsformat
2.2.3.1
Einadressformat
2.2.3.2
Zweiadressformat
2.2.3.3
Dreiadressformat
2.2.3.4
Das Adressformat und der Von-Neumann-Zyklus
2.2.3.5
Aufgaben & Co. zum Befehlsformat
2.2.4
Adressierungsarten
2.2.4.1
Unmittelbare Adressierung
2.2.4.2
Registeradressierung
2.2.4.3
Direkte/absolute Adressierung
2.2.4.4
Registerindirekte Adressierung
2.2.4.5
Indizierte Adressierung mit Verschiebung
2.2.5
Vom Programm zum Prozess
2.2.6
Gesamtbild der Programmausführung
2.2.7
Aufgaben & Co. zu Prozessoren
2.3
Weitere Komponenten der Computerarchitektur
2.3.1
Stackregister
2.3.2
Basisregister
2.3.2.1
Mehrere Prozesse gleichzeitig im Speicher
2.3.2.2
Swapping: Aus- und Einlagern von kompletten Prozessen
2.3.3
Limitregister zum Speicherschutz
2.3.4
Interrupt-Controller
2.3.4.1
Gründe für eine Interrupt-Auslösung
2.3.4.2
Speicherschutzverletzung
2.3.4.3
Quasi-gleichzeitige Ausführung mehrerer Prozesse
2.3.4.4
Kommunikation mit E/A-Geräten
2.3.4.4.1
Allgemeiner Aufbau eines Controllers
2.3.4.4.2
Zeit und Kosten machen den Unterschied
2.3.4.4.3
Datentransfer und Interrupts
2.3.5
DMA-Controller
2.3.5.1
Aufbau und Arbeitsweise eines DMA-Controllers
2.3.5.2
Direkt kann wirklich direkt bedeuten
2.3.6
MMU - Memory Management Unit
2.3.7
Moderne Bussysteme
2.4
Fazit Computerarchitektur
3
Betriebssysteme
3.1
Einführung Betriebssysteme
3.1.1
Geschichtlicher Überblick zu Betriebssystemen
3.1.2
Nur ein Prozessor mit einem Kern
3.1.3
Zwischen Benutzer und Hardware
3.1.4
Betriebsmittel
3.1.5
Betriebsmittel sind Prozessen zugeordnet
3.1.6
Zentrale Aufgabe eines Betriebssystems
3.1.7
Betriebssystemarchitekturen
3.1.8
Betriebssystemarten
3.1.9
Vom Batch-Job zum Multitasking
3.1.10
Kernel-Mode, User-Mode und Systemaufrufe
3.2
Prozessverwaltung
3.2.1
Prozess
3.2.2
Prozesskontext
3.2.3
Kontextwechsel
3.2.3.1
Die Statistik der Kontextwechsel unter Windows
3.2.3.2
Die Statistik der Kontextwechsel unter Linux
3.2.4
Prozesse erzeugen
3.2.4.1
Fork
3.2.4.2
CreateProcess
3.2.5
Prozesskontrollblock
3.2.5.1
Prozesskontrollblock unter Windows
3.2.5.2
Prozesskontrollblock unter Linux
3.2.6
Prozesstabelle
3.2.7
Prozesszustände
3.2.8
Verwalten von Prozessen
3.2.8.1
Prozessverwaltung aus Admin-Sicht unter Windows
3.2.8.2
Prozessverwaltung aus Admin-Sicht unter Linux
3.2.9
Threads
3.2.9.1
Java-Beispiel mit Threads
3.2.9.2
Prozesse und Threads unter Windows
3.2.9.3
Prozesse und Threads unter Unix und Linux
3.2.10
Scheduling
3.2.10.1
Scheduling-Ziele
3.2.10.2
Scheduling-Verfahren
3.2.10.2.1
First Come First Serve
3.2.10.2.2
Shortest Job First
3.2.10.2.3
Shortest Remaining Time Next
3.2.10.2.4
Round Robin
3.2.10.2.5
Priority Scheduling
3.2.10.2.6
Weitere Verfahren
3.2.10.3
Scheduling in gängigen Betriebssystemen
3.2.10.4
Vergleichskriterien
3.2.11
Synchronisation
3.2.11.1
Grundlegende Begriffsdefinitionen zur Synchronisation
3.2.11.1.1
Nebenläufigkeit
3.2.11.1.2
Race Conditions
3.2.11.1.3
Kritischer Abschnitt
3.2.11.2
Aktives Warten
3.2.11.2.1
Aktives Warten mit while
3.2.11.2.2
Das Problem des ungünstigsten Moments
3.2.11.2.3
Aktives Warten mit TSL
3.2.11.3
Semaphore
3.2.11.3.1
Mutex
3.2.11.3.1.1
Wechselseitiger Ausschluss
3.2.11.3.1.2
Reihenfolgedurchsetzung
3.2.11.3.2
Zählsemaphor
3.2.11.3.2.1
Erzeuger- / Verbraucherproblem
3.2.11.3.2.2
Philosophenproblem
3.2.11.4
Monitore
3.2.11.5
Zusammenfassung Synchronisation
3.2.11.6
Synchronisationstechniken moderner Betriebssysteme
3.2.11.7
Synchronisationsmechanismen in Programmiersprachen
3.2.12
Deadlocks
3.2.12.1
Vier Bedingungen nach Coffman
3.2.12.2
Deadlocks erkennen
3.2.12.3
Deadlocks ignorieren
3.2.12.4
Deadlocks vermeiden
3.2.12.5
Deadlocks verhindern
3.2.12.6
Deadlock-Fazit
3.2.13
Interprozesskommunikation
3.2.13.1
Zwei Threads kommunizieren über gemeinsame Variablen
3.2.13.2
Zwei Prozesse kommunizieren über gemeinsame Speicherobjekte
3.2.13.3
Zwei Prozesse kommunizieren über Shared Memory
3.2.13.4
Zwei Prozesse kommunizieren über Pipes
3.2.13.5
Zwei Prozesse kommunizieren über Sockets
3.2.13.6
Interprozesskommunikation-Fazit
3.3
Speicherverwaltung
3.3.1
Virtuelle Speicherverwaltung
3.3.1.1
Arbeitsweise der MMU
3.3.1.2
Seitentabellen
3.3.1.2.1
Einstufige Seitentabellen
3.3.1.2.2
Mehrstufige Seitentabellen
3.3.2
Swapping und Paging
3.3.2.1
Page Fault
3.3.2.2
Seitenersetzung
3.3.2.2.1
Was bei der Seitenersetzung passiert
3.3.2.2.2
Das Modifiziert-Bit
3.3.2.2.3
Seitenersetzungsverfahren
3.3.2.2.3.1
Optimaler Seitenersetzungsalgorithmus
3.3.2.2.3.2
NRU - Not Recently Used Algorithmus
3.3.2.2.3.3
FIFO - First In First Out Algorithmus
3.3.2.2.3.4
Second Chance Algorithmus
3.3.2.2.3.5
Working Set Algorithmus
3.3.3
Shared Memory
3.3.4
Speicherverwaltung moderner Betriebssysteme
3.3.4.1
Speicherverwaltung unter Linux
3.3.4.2
Speicherverwaltung in Windows
3.3.4.3
Speicherverwaltung unter Android
3.4
Geräteverwaltung
3.4.1
Rolle der Geräteverwaltung
3.4.2
Abhängig und gleichzeitig unabhängig
3.4.3
Gerätetreiber
3.4.4
Aufgaben eines Treibers
3.4.4.1
Initialisierung des Geräte-Controllers
3.4.4.2
Gerät dem Betriebssystem bekannt machen
3.4.4.3
Bereitstellen einer Schnittstelle zum Geräte-Controller
3.4.4.4
Interruptbehandlung für ein Gerät
3.4.4.5
Bereitstellen einer Schnittstelle zur Geräteverwaltung
3.4.4.6
Pufferung von Daten
3.4.4.7
Koordination nebenläufiger Zugriffe auf ein Gerät
3.4.5
Geräteklassen
3.4.5.1
Blockorientierte Geräte
3.4.5.2
Zeichenorientierte Geräte
3.4.5.3
Sonstige Geräte
3.4.6
Memory-Mapped-I/O
3.4.7
DMA - Direct Memory Access
3.4.8
Windows-Treiber auf GitHub
3.5
Dateiverwaltung
3.5.1
Datei
3.5.2
Dateisystem
3.5.3
Aufgaben eines Dateisystems
3.5.4
Dateisystemkonzepte
3.5.5
Von Windows unterstützte Dateisysteme
3.5.5.1
FAT - File Allocation Table
3.5.5.2
NTFS - New Technology File System
4
Aufgaben zur Prüfungsvorbereitung
4.1
Aufgaben zum Kapitel Vom Anwender zur digitalen Schaltung
4.2
Aufgaben zum Kapitel Prozessoren und ihre Befehle
4.3
Aufgaben zum Kapitel Weitere Komponenten der Computerarchitektur
4.4
Aufgaben zum Kapitel Einführung Betriebssysteme
4.5
Aufgaben zum Kapitel Prozessverwaltung
4.5.1
Aufgaben zu Prozesse und Threads
4.5.2
Aufgaben zum Scheduling
4.5.3
Aufgaben zur Synchronisation
4.5.4
Aufgaben zu Deadlocks
4.6
Aufgaben zum Kapitel Speicherverwaltung
4.7
Aufgaben zum Kapitel Geräteverwaltung
4.8
Aufgaben zum Kapitel Dateiverwaltung
5
Logbuch
5.1
Jahr 2013
5.2
Jahr 2014
5.3
Jahr 2015
5.4
Jahr 2016
6
Anhang
6.1
Zweier-Potenzen
6.2
Bits und Bytes
6.3
GiB, MiB, KiB im Vergleich zu GB, MB, KB
6.4
Java-Applets
6.5
Inhalt dieses LOOPs ausdrucken
6.6
Impressum
Inhalt
Computerarchitektur und Betriebssysteme
1
Motivation
1.1
Hinweise für Studierende
1.2
Hinweise für Experten
1.3
Copyright
2
Computerarchitektur
2.1
Vom Anwender zur digitalen Schaltung
2.1.1
Erstmal aufschrauben
2.1.2
Von-Neumann-Rechner
2.1.2.1
Von-Neumann-Architektur
2.1.2.2
Von-Neumann-Flaschenhals
2.1.3
Komponenten eines Von-Neumann-Rechners
2.1.3.1
Zentraleinheit / CPU
2.1.3.1.1
Steuerwerk / Leitwerk
2.1.3.1.2
Rechenwerk
2.1.3.2
Speicherwerk
2.1.3.3
Ein- / Ausgabewerk
2.1.3.4
Gesamtbild eines Von-Neumann-Rechners
2.1.3.5
Von-Neumann-Zyklus
2.1.3.6
Animation der Zusammenarbeit
2.1.4
Eigenschaften eines Von-Neumann-Rechners
2.1.5
Digitale Schaltungen
2.1.5.1
Aufbau und Arbeitsweise eines Registers
2.1.5.2
Aufbau und Arbeitsweise des Speicherwerks
2.1.5.3
Aufbau und Arbeitsweise der ALU
2.1.5.4
Aufbau und Arbeitsweise eines Busses
2.1.6
Gatter
2.2
Prozessoren und ihre Befehle
2.2.1
Vom Quellcode zum Prozessor
2.2.2
Befehlssatz
2.2.3
Befehlsformat
2.2.3.1
Einadressformat
2.2.3.2
Zweiadressformat
2.2.3.3
Dreiadressformat
2.2.3.4
Das Adressformat und der Von-Neumann-Zyklus
2.2.3.5
Aufgaben & Co. zum Befehlsformat
2.2.4
Adressierungsarten
2.2.4.1
Unmittelbare Adressierung
2.2.4.2
Registeradressierung
2.2.4.3
Direkte/absolute Adressierung
2.2.4.4
Registerindirekte Adressierung
2.2.4.5
Indizierte Adressierung mit Verschiebung
2.2.5
Vom Programm zum Prozess
2.2.6
Gesamtbild der Programmausführung
2.2.7
Aufgaben & Co. zu Prozessoren
2.3
Weitere Komponenten der Computerarchitektur
2.3.1
Stackregister
2.3.2
Basisregister
2.3.2.1
Mehrere Prozesse gleichzeitig im Speicher
2.3.2.2
Swapping: Aus- und Einlagern von kompletten Prozessen
2.3.3
Limitregister zum Speicherschutz
2.3.4
Interrupt-Controller
2.3.4.1
Gründe für eine Interrupt-Auslösung
2.3.4.2
Speicherschutzverletzung
2.3.4.3
Quasi-gleichzeitige Ausführung mehrerer Prozesse
2.3.4.4
Kommunikation mit E/A-Geräten
2.3.4.4.1
Allgemeiner Aufbau eines Controllers
2.3.4.4.2
Zeit und Kosten machen den Unterschied
2.3.4.4.3
Datentransfer und Interrupts
2.3.5
DMA-Controller
2.3.5.1
Aufbau und Arbeitsweise eines DMA-Controllers
2.3.5.2
Direkt kann wirklich direkt bedeuten
2.3.6
MMU - Memory Management Unit
2.3.7
Moderne Bussysteme
2.4
Fazit Computerarchitektur
3
Betriebssysteme
3.1
Einführung Betriebssysteme
3.1.1
Geschichtlicher Überblick zu Betriebssystemen
3.1.2
Nur ein Prozessor mit einem Kern
3.1.3
Zwischen Benutzer und Hardware
3.1.4
Betriebsmittel
3.1.5
Betriebsmittel sind Prozessen zugeordnet
3.1.6
Zentrale Aufgabe eines Betriebssystems
3.1.7
Betriebssystemarchitekturen
3.1.8
Betriebssystemarten
3.1.9
Vom Batch-Job zum Multitasking
3.1.10
Kernel-Mode, User-Mode und Systemaufrufe
3.2
Prozessverwaltung
3.2.1
Prozess
3.2.2
Prozesskontext
3.2.3
Kontextwechsel
3.2.3.1
Die Statistik der Kontextwechsel unter Windows
3.2.3.2
Die Statistik der Kontextwechsel unter Linux
3.2.4
Prozesse erzeugen
3.2.4.1
Fork
3.2.4.2
CreateProcess
3.2.5
Prozesskontrollblock
3.2.5.1
Prozesskontrollblock unter Windows
3.2.5.2
Prozesskontrollblock unter Linux
3.2.6
Prozesstabelle
3.2.7
Prozesszustände
3.2.8
Verwalten von Prozessen
3.2.8.1
Prozessverwaltung aus Admin-Sicht unter Windows
3.2.8.2
Prozessverwaltung aus Admin-Sicht unter Linux
3.2.9
Threads
3.2.9.1
Java-Beispiel mit Threads
3.2.9.2
Prozesse und Threads unter Windows
3.2.9.3
Prozesse und Threads unter Unix und Linux
3.2.10
Scheduling
3.2.10.1
Scheduling-Ziele
3.2.10.2
Scheduling-Verfahren
3.2.10.2.1
First Come First Serve
3.2.10.2.2
Shortest Job First
3.2.10.2.3
Shortest Remaining Time Next
3.2.10.2.4
Round Robin
3.2.10.2.5
Priority Scheduling
3.2.10.2.6
Weitere Verfahren
3.2.10.3
Scheduling in gängigen Betriebssystemen
3.2.10.4
Vergleichskriterien
3.2.11
Synchronisation
3.2.11.1
Grundlegende Begriffsdefinitionen zur Synchronisation
3.2.11.1.1
Nebenläufigkeit
3.2.11.1.2
Race Conditions
3.2.11.1.3
Kritischer Abschnitt
3.2.11.2
Aktives Warten
3.2.11.2.1
Aktives Warten mit while
3.2.11.2.2
Das Problem des ungünstigsten Moments
3.2.11.2.3
Aktives Warten mit TSL
3.2.11.3
Semaphore
3.2.11.3.1
Mutex
3.2.11.3.1.1
Wechselseitiger Ausschluss
3.2.11.3.1.2
Reihenfolgedurchsetzung
3.2.11.3.2
Zählsemaphor
3.2.11.3.2.1
Erzeuger- / Verbraucherproblem
3.2.11.3.2.2
Philosophenproblem
3.2.11.4
Monitore
3.2.11.5
Zusammenfassung Synchronisation
3.2.11.6
Synchronisationstechniken moderner Betriebssysteme
3.2.11.7
Synchronisationsmechanismen in Programmiersprachen
3.2.12
Deadlocks
3.2.12.1
Vier Bedingungen nach Coffman
3.2.12.2
Deadlocks erkennen
3.2.12.3
Deadlocks ignorieren
3.2.12.4
Deadlocks vermeiden
3.2.12.5
Deadlocks verhindern
3.2.12.6
Deadlock-Fazit
3.2.13
Interprozesskommunikation
3.2.13.1
Zwei Threads kommunizieren über gemeinsame Variablen
3.2.13.2
Zwei Prozesse kommunizieren über gemeinsame Speicherobjekte
3.2.13.3
Zwei Prozesse kommunizieren über Shared Memory
3.2.13.4
Zwei Prozesse kommunizieren über Pipes
3.2.13.5
Zwei Prozesse kommunizieren über Sockets
3.2.13.6
Interprozesskommunikation-Fazit
3.3
Speicherverwaltung
3.3.1
Virtuelle Speicherverwaltung
3.3.1.1
Arbeitsweise der MMU
3.3.1.2
Seitentabellen
3.3.1.2.1
Einstufige Seitentabellen
3.3.1.2.2
Mehrstufige Seitentabellen
3.3.2
Swapping und Paging
3.3.2.1
Page Fault
3.3.2.2
Seitenersetzung
3.3.2.2.1
Was bei der Seitenersetzung passiert
3.3.2.2.2
Das Modifiziert-Bit
3.3.2.2.3
Seitenersetzungsverfahren
3.3.2.2.3.1
Optimaler Seitenersetzungsalgorithmus
3.3.2.2.3.2
NRU - Not Recently Used Algorithmus
3.3.2.2.3.3
FIFO - First In First Out Algorithmus
3.3.2.2.3.4
Second Chance Algorithmus
3.3.2.2.3.5
Working Set Algorithmus
3.3.3
Shared Memory
3.3.4
Speicherverwaltung moderner Betriebssysteme
3.3.4.1
Speicherverwaltung unter Linux
3.3.4.2
Speicherverwaltung in Windows
3.3.4.3
Speicherverwaltung unter Android
3.4
Geräteverwaltung
3.4.1
Rolle der Geräteverwaltung
3.4.2
Abhängig und gleichzeitig unabhängig
3.4.3
Gerätetreiber
3.4.4
Aufgaben eines Treibers
3.4.4.1
Initialisierung des Geräte-Controllers
3.4.4.2
Gerät dem Betriebssystem bekannt machen
3.4.4.3
Bereitstellen einer Schnittstelle zum Geräte-Controller
3.4.4.4
Interruptbehandlung für ein Gerät
3.4.4.5
Bereitstellen einer Schnittstelle zur Geräteverwaltung
3.4.4.6
Pufferung von Daten
3.4.4.7
Koordination nebenläufiger Zugriffe auf ein Gerät
3.4.5
Geräteklassen
3.4.5.1
Blockorientierte Geräte
3.4.5.2
Zeichenorientierte Geräte
3.4.5.3
Sonstige Geräte
3.4.6
Memory-Mapped-I/O
3.4.7
DMA - Direct Memory Access
3.4.8
Windows-Treiber auf GitHub
3.5
Dateiverwaltung
3.5.1
Datei
3.5.2
Dateisystem
3.5.3
Aufgaben eines Dateisystems
3.5.4
Dateisystemkonzepte
3.5.5
Von Windows unterstützte Dateisysteme
3.5.5.1
FAT - File Allocation Table
3.5.5.2
NTFS - New Technology File System
4
Aufgaben zur Prüfungsvorbereitung
4.1
Aufgaben zum Kapitel Vom Anwender zur digitalen Schaltung
4.2
Aufgaben zum Kapitel Prozessoren und ihre Befehle
4.3
Aufgaben zum Kapitel Weitere Komponenten der Computerarchitektur
4.4
Aufgaben zum Kapitel Einführung Betriebssysteme
4.5
Aufgaben zum Kapitel Prozessverwaltung
4.5.1
Aufgaben zu Prozesse und Threads
4.5.2
Aufgaben zum Scheduling
4.5.3
Aufgaben zur Synchronisation
4.5.4
Aufgaben zu Deadlocks
4.6
Aufgaben zum Kapitel Speicherverwaltung
4.7
Aufgaben zum Kapitel Geräteverwaltung
4.8
Aufgaben zum Kapitel Dateiverwaltung
5
Logbuch
5.1
Jahr 2013
5.2
Jahr 2014
5.3
Jahr 2015
5.4
Jahr 2016
6
Anhang
6.1
Zweier-Potenzen
6.2
Bits und Bytes
6.3
GiB, MiB, KiB im Vergleich zu GB, MB, KB
6.4
Java-Applets
6.5
Inhalt dieses LOOPs ausdrucken
6.6
Impressum
Abbildungsverzeichnis
Medienverzeichnis
Listingverzeichnis
Aufgabenverzeichnis
Literaturverzeichnis
Index
Export
Als PDF herunterladen