Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
(180 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
[[Computerarchitektur_und_Betriebssysteme]] | [[Computerarchitektur_und_Betriebssysteme]] | ||
= Motivation = | = Motivation = | ||
== Hinweise für Studierende == | == Hinweise für Studierende == | ||
== Hinweise für Experten == | == Hinweise für Experten == | ||
== Copyright == | == Copyright == | ||
= Computerarchitektur = | = Computerarchitektur = | ||
== | == Vom Anwender zur digitalen Schaltung == | ||
=== Erstmal aufschrauben === | === Erstmal aufschrauben === | ||
=== Von-Neumann- | === Von-Neumann-Rechner === | ||
=== Von-Neumann- | ==== Von-Neumann-Architektur ==== | ||
=== | ==== Von-Neumann-Flaschenhals ==== | ||
=== Komponenten eines Von-Neumann-Rechners === | |||
== | |||
=== | |||
==== Zentraleinheit / CPU ==== | ==== Zentraleinheit / CPU ==== | ||
===== Steuerwerk / Leitwerk ===== | ===== Steuerwerk / Leitwerk ===== | ||
Zeile 28: | Zeile 16: | ||
==== Speicherwerk ==== | ==== Speicherwerk ==== | ||
==== Ein- / Ausgabewerk ==== | ==== Ein- / Ausgabewerk ==== | ||
==== | ==== Gesamtbild eines Von-Neumann-Rechners ==== | ||
===== Von-Neumann- | ==== Von-Neumann-Zyklus ==== | ||
===== | ==== Animation der Zusammenarbeit ==== | ||
=== Eigenschaften eines Von-Neumann-Rechners === | |||
=== Digitale Schaltungen === | |||
==== Aufbau und Arbeitsweise eines Registers ==== | |||
==== Aufbau und Arbeitsweise des Speicherwerks ==== | |||
==== Aufbau und Arbeitsweise der ALU ==== | |||
==== Aufbau und Arbeitsweise eines Busses ==== | |||
=== Gatter === | |||
== Prozessoren und ihre Befehle == | == Prozessoren und ihre Befehle == | ||
=== | === Vom Quellcode zum Prozessor === | ||
=== Befehlssatz === | === Befehlssatz === | ||
=== | === Befehlsformat === | ||
== | ==== Einadressformat ==== | ||
=== | ==== Zweiadressformat ==== | ||
=== | ==== Dreiadressformat ==== | ||
=== | ==== Das Adressformat und der Von-Neumann-Zyklus ==== | ||
== | ==== Aufgaben & Co. zum Befehlsformat ==== | ||
== | === Adressierungsarten === | ||
== | ==== Unmittelbare Adressierung ==== | ||
==== Registeradressierung ==== | |||
==== Direkte/absolute Adressierung ==== | |||
==== Registerindirekte Adressierung ==== | |||
==== Indizierte Adressierung mit Verschiebung ==== | |||
=== Vom Programm zum Prozess === | |||
=== Gesamtbild der Programmausführung === | |||
=== Aufgaben & Co. zu Prozessoren === | |||
== Weitere Komponenten der Computerarchitektur == | |||
=== Stackregister === | |||
=== Basisregister === | |||
==== Mehrere Prozesse gleichzeitig im Speicher ==== | |||
==== Swapping: Aus- und Einlagern von kompletten Prozessen ==== | |||
=== Limitregister zum Speicherschutz === | |||
=== Interrupt-Controller === | |||
==== Gründe für eine Interrupt-Auslösung ==== | |||
==== Speicherschutzverletzung ==== | |||
==== Quasi-gleichzeitige Ausführung mehrerer Prozesse ==== | |||
==== Kommunikation mit E/A-Geräten ==== | |||
===== Allgemeiner Aufbau eines Controllers ===== | |||
===== Zeit und Kosten machen den Unterschied ===== | |||
===== Datentransfer und Interrupts ===== | |||
=== DMA-Controller === | |||
==== Aufbau und Arbeitsweise eines DMA-Controllers ==== | |||
==== Direkt kann wirklich direkt bedeuten ==== | |||
=== MMU - Memory Management Unit === | |||
=== Moderne Bussysteme === | |||
== Fazit Computerarchitektur == | |||
= Betriebssysteme = | = Betriebssysteme = | ||
== Einführung | == Einführung Betriebssysteme == | ||
== Prozesse und Threads == | === Geschichtlicher Überblick zu Betriebssystemen === | ||
=== Nur ein Prozessor mit einem Kern === | |||
=== Zwischen Benutzer und Hardware === | |||
=== Betriebsmittel === | |||
=== Betriebsmittel sind Prozessen zugeordnet === | |||
=== Zentrale Aufgabe eines Betriebssystems === | |||
=== Betriebssystemarchitekturen === | |||
=== Betriebssystemarten === | |||
=== Vom Batch-Job zum Multitasking === | |||
=== Kernel-Mode, User-Mode und Systemaufrufe === | |||
== Prozessverwaltung == | |||
=== Prozess === | |||
=== Prozesskontext === | |||
=== Kontextwechsel === | |||
==== Die Statistik der Kontextwechsel unter Windows ==== | |||
==== Die Statistik der Kontextwechsel unter Linux ==== | |||
=== Prozesse erzeugen === | |||
==== Fork ==== | |||
==== CreateProcess ==== | |||
=== Prozesskontrollblock === | |||
==== Prozesskontrollblock unter Windows ==== | |||
==== Prozesskontrollblock unter Linux ==== | |||
=== Prozesstabelle === | |||
=== Prozesszustände === | |||
=== Verwalten von Prozessen === | |||
==== Prozessverwaltung aus Admin-Sicht unter Windows ==== | |||
==== Prozessverwaltung aus Admin-Sicht unter Linux ==== | |||
=== Threads === | |||
==== Java-Beispiel mit Threads ==== | |||
==== Prozesse und Threads unter Windows ==== | |||
==== Prozesse und Threads unter Unix und Linux ==== | |||
=== Scheduling === | |||
==== Scheduling-Ziele ==== | |||
==== Scheduling-Verfahren ==== | |||
===== First Come First Serve ===== | |||
===== Shortest Job First ===== | |||
===== Shortest Remaining Time Next ===== | |||
===== Round Robin ===== | |||
===== Priority Scheduling ===== | |||
===== Weitere Verfahren ===== | |||
==== Scheduling in gängigen Betriebssystemen ==== | |||
==== Vergleichskriterien ==== | |||
=== Synchronisation === | |||
==== Grundlegende Begriffsdefinitionen zur Synchronisation ==== | |||
===== Nebenläufigkeit ===== | |||
===== Race Conditions ===== | |||
===== Kritischer Abschnitt ===== | |||
==== Aktives Warten ==== | |||
===== Aktives Warten mit while ===== | |||
===== Das Problem des ungünstigsten Moments ===== | |||
===== Aktives Warten mit TSL ===== | |||
==== Semaphore ==== | |||
===== Mutex ===== | |||
====== Wechselseitiger Ausschluss ====== | |||
====== Reihenfolgedurchsetzung ====== | |||
===== Zählsemaphor ===== | |||
====== Erzeuger- / Verbraucherproblem ====== | |||
====== Philosophenproblem ====== | |||
==== Monitore ==== | |||
==== Zusammenfassung Synchronisation ==== | |||
==== Synchronisationstechniken moderner Betriebssysteme ==== | |||
==== Synchronisationsmechanismen in Programmiersprachen ==== | |||
=== Deadlocks === | |||
==== Vier Bedingungen nach Coffman ==== | |||
==== Deadlocks erkennen ==== | |||
==== Deadlocks ignorieren ==== | |||
==== Deadlocks vermeiden ==== | |||
==== Deadlocks verhindern ==== | |||
==== Deadlock-Fazit ==== | |||
=== Interprozesskommunikation === | |||
==== Zwei Threads kommunizieren über gemeinsame Variablen ==== | |||
==== Zwei Prozesse kommunizieren über gemeinsame Speicherobjekte ==== | |||
==== Zwei Prozesse kommunizieren über Shared Memory ==== | |||
==== Zwei Prozesse kommunizieren über Pipes ==== | |||
==== Zwei Prozesse kommunizieren über Sockets ==== | |||
==== Interprozesskommunikation-Fazit ==== | |||
== Speicherverwaltung == | == Speicherverwaltung == | ||
== Dateisysteme == | === Virtuelle Speicherverwaltung === | ||
== | ==== Arbeitsweise der MMU ==== | ||
== | ==== Seitentabellen ==== | ||
= | ===== Einstufige Seitentabellen ===== | ||
===== Mehrstufige Seitentabellen ===== | |||
=== Swapping und Paging === | |||
==== Page Fault ==== | |||
==== Seitenersetzung ==== | |||
===== Was bei der Seitenersetzung passiert ===== | |||
===== Das Modifiziert-Bit ===== | |||
===== Seitenersetzungsverfahren ===== | |||
====== Optimaler Seitenersetzungsalgorithmus ====== | |||
====== NRU - Not Recently Used Algorithmus ====== | |||
====== FIFO - First In First Out Algorithmus ====== | |||
====== Second Chance Algorithmus ====== | |||
====== Working Set Algorithmus ====== | |||
=== Shared Memory === | |||
=== Speicherverwaltung moderner Betriebssysteme === | |||
==== Speicherverwaltung unter Linux ==== | |||
==== Speicherverwaltung in Windows ==== | |||
==== Speicherverwaltung unter Android ==== | |||
== Geräteverwaltung == | |||
=== Rolle der Geräteverwaltung === | |||
=== Abhängig und gleichzeitig unabhängig === | |||
=== Gerätetreiber === | |||
=== Aufgaben eines Treibers === | |||
==== Initialisierung des Geräte-Controllers ==== | |||
==== Gerät dem Betriebssystem bekannt machen ==== | |||
==== Bereitstellen einer Schnittstelle zum Geräte-Controller ==== | |||
==== Interruptbehandlung für ein Gerät ==== | |||
==== Bereitstellen einer Schnittstelle zur Geräteverwaltung ==== | |||
==== Pufferung von Daten ==== | |||
==== Koordination nebenläufiger Zugriffe auf ein Gerät ==== | |||
=== Geräteklassen === | |||
==== Blockorientierte Geräte ==== | |||
==== Zeichenorientierte Geräte ==== | |||
==== Sonstige Geräte ==== | |||
=== Memory-Mapped-I/O === | |||
=== DMA - Direct Memory Access === | |||
=== Windows-Treiber auf GitHub === | |||
== Dateiverwaltung == | |||
=== Datei === | |||
=== Dateisystem === | |||
=== Aufgaben eines Dateisystems === | |||
=== Dateisystemkonzepte === | |||
=== Von Windows unterstützte Dateisysteme === | |||
==== FAT - File Allocation Table ==== | |||
==== NTFS - New Technology File System ==== | |||
= Aufgaben zur Prüfungsvorbereitung = | |||
== Aufgaben zum Kapitel Vom Anwender zur digitalen Schaltung == | |||
== Aufgaben zum Kapitel Prozessoren und ihre Befehle == | |||
== Aufgaben zum Kapitel Weitere Komponenten der Computerarchitektur == | |||
== Aufgaben zum Kapitel Einführung Betriebssysteme == | |||
== Aufgaben zum Kapitel Prozessverwaltung == | |||
=== Aufgaben zu Prozesse und Threads === | |||
=== Aufgaben zum Scheduling === | |||
=== Aufgaben zur Synchronisation === | |||
=== Aufgaben zu Deadlocks === | |||
== Aufgaben zum Kapitel Speicherverwaltung == | |||
== Aufgaben zum Kapitel Geräteverwaltung == | |||
== Aufgaben zum Kapitel Dateiverwaltung == | |||
= Logbuch = | = Logbuch = | ||
== Jahr 2013 == | == Jahr 2013 == | ||
== Jahr 2014 == | |||
== Jahr 2015 == | |||
== Jahr 2016 == | |||
= Anhang = | |||
== Zweier-Potenzen == | |||
== Bits und Bytes == | |||
== GiB, MiB, KiB im Vergleich zu GB, MB, KB == | |||
== Java-Applets == | |||
== Inhalt dieses LOOPs ausdrucken == | |||
== Literatur == | |||
== Impressum == |
Computerarchitektur_und_Betriebssysteme