Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(34 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 ==
Zeile 34: Zeile 33:
==== Zweiadressformat ====
==== Zweiadressformat ====
==== Dreiadressformat ====
==== Dreiadressformat ====
==== Das Adressformat und der Von-Neumann-Zyklus ====
==== Aufgaben & Co. zum Befehlsformat ====
==== Aufgaben & Co. zum Befehlsformat ====
=== Adressierungsarten ===
=== Adressierungsarten ===
Zeile 55: Zeile 55:
==== Quasi-gleichzeitige Ausführung mehrerer Prozesse ====
==== Quasi-gleichzeitige Ausführung mehrerer Prozesse ====
==== Kommunikation mit E/A-Geräten ====
==== Kommunikation mit E/A-Geräten ====
===== Allgemeiner Aufbau eines Controllers =====
===== Zeit und Kosten machen den Unterschied =====
===== Datentransfer und Interrupts =====
=== DMA-Controller ===
=== DMA-Controller ===
==== Aufbau und Arbeitsweise eines DMA-Controllers ====
==== Direkt kann wirklich direkt bedeuten ====
=== MMU - Memory Management Unit ===
=== MMU - Memory Management Unit ===
=== Moderne Bussysteme ===
=== Moderne Bussysteme ===
Zeile 69: Zeile 74:
=== Betriebssystemarchitekturen ===
=== Betriebssystemarchitekturen ===
=== Betriebssystemarten ===
=== Betriebssystemarten ===
=== Vom Batch-Job zum Multitasking ===
=== Kernel-Mode, User-Mode und Systemaufrufe ===
=== Kernel-Mode, User-Mode und Systemaufrufe ===
== Prozessverwaltung ==
== Prozessverwaltung ==
=== Vom Batch-Job zum Multitasking ===
=== Prozess ===
==== Kontextwechsel ====
=== Prozesskontext ===
=== Kontextwechsel ===
==== Die Statistik der Kontextwechsel unter Windows ====
==== Die Statistik der Kontextwechsel unter Windows ====
==== Die Statistik der Kontextwechsel unter Linux ====
==== Die Statistik der Kontextwechsel unter Linux ====
Zeile 78: Zeile 85:
==== Fork ====
==== Fork ====
==== CreateProcess ====
==== CreateProcess ====
=== Verwalten von Prozessen ===
=== Prozesskontrollblock ===
==== Prozesskontrollblock unter Windows ====
==== Prozesskontrollblock unter Windows ====
==== Prozesskontrollblock unter Linux ====
==== Prozesskontrollblock unter Linux ====
=== Prozesstabelle ===
=== Prozesszustände ===
=== Verwalten von Prozessen ===
==== Prozessverwaltung aus Admin-Sicht unter Windows ====
==== Prozessverwaltung aus Admin-Sicht unter Windows ====
==== Prozessverwaltung aus Admin-Sicht unter Linux ====
==== Prozessverwaltung aus Admin-Sicht unter Linux ====
=== Prozesszustände ===
=== Threads ===
=== Threads ===
==== Java-Beispiel mit Threads ====
==== Java-Beispiel mit Threads ====
Zeile 100: Zeile 109:
==== Vergleichskriterien ====
==== Vergleichskriterien ====
=== Synchronisation ===
=== Synchronisation ===
==== Race Conditions ====
==== Grundlegende Begriffsdefinitionen zur Synchronisation ====
==== Kritischer Abschnitt ====
===== Nebenläufigkeit =====
===== Race Conditions =====
===== Kritischer Abschnitt =====
==== Aktives Warten ====
==== Aktives Warten ====
==== TSL-Befehl ====
===== Aktives Warten mit while =====
===== Das Problem des ungünstigsten Moments =====
===== Aktives Warten mit TSL =====
==== Semaphore ====
==== Semaphore ====
==== Deadlocks ====
===== Mutex =====
===== Deadlocks erkennen =====
====== Wechselseitiger Ausschluss ======
===== Deadlocks ignorieren =====
====== Reihenfolgedurchsetzung ======
===== Deadlocks vermeiden =====
===== Zählsemaphor =====
===== Deadlocks verhindern =====
====== Erzeuger- / Verbraucherproblem ======
===== Deadlock-Fazit =====
====== Philosophenproblem ======
==== Monitore ====
==== Monitore ====
==== Zusammenfassung Synchronisation ====
==== Synchronisationstechniken moderner Betriebssysteme ====
==== Synchronisationstechniken moderner Betriebssysteme ====
==== Synchronisationsmechanismen in Programmiersprachen ====
==== Synchronisationsmechanismen in Programmiersprachen ====
=== Deadlocks ===
==== Vier Bedingungen nach Coffman ====
==== Deadlocks erkennen ====
==== Deadlocks ignorieren ====
==== Deadlocks vermeiden ====
==== Deadlocks verhindern ====
==== Deadlock-Fazit ====
=== Interprozesskommunikation ===
=== Interprozesskommunikation ===
==== Zwei Threads kommunizieren über gemeinsame Variablen ====
==== Zwei Threads kommunizieren über gemeinsame Variablen ====
Zeile 129: Zeile 150:
=== Swapping und Paging ===
=== Swapping und Paging ===
==== Page Fault ====
==== Page Fault ====
==== Seitenersetzungsverfahren ====
==== Seitenersetzung ====
===== Optimaler Seitenersetzungsalgorithmus =====
===== Was bei der Seitenersetzung passiert =====
===== NRU - Not Recently Used Algorithmus =====
===== Das Modifiziert-Bit =====
===== FIFO - First In First Out Algorithmus =====
===== Seitenersetzungsverfahren =====
===== Second Chance Algorithmus =====
====== Optimaler Seitenersetzungsalgorithmus ======
===== Working Set Algorithmus =====
====== NRU - Not Recently Used Algorithmus ======
====== FIFO - First In First Out Algorithmus ======
====== Second Chance Algorithmus ======
====== Working Set Algorithmus ======
=== Shared Memory ===
=== Shared Memory ===
=== Speicherverwaltung moderner Betriebssysteme ===
=== Speicherverwaltung moderner Betriebssysteme ===
Zeile 158: Zeile 182:
=== Memory-Mapped-I/O ===
=== Memory-Mapped-I/O ===
=== DMA - Direct Memory Access ===
=== DMA - Direct Memory Access ===
=== Windows-Treiber auf GitHub ===
== Dateiverwaltung ==
== Dateiverwaltung ==
=== Datei ===
=== Datei ===
Zeile 168: Zeile 193:
= Aufgaben zur Prüfungsvorbereitung =
= Aufgaben zur Prüfungsvorbereitung =
== Aufgaben zum Kapitel Vom Anwender zur digitalen Schaltung ==
== 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 2014 ==
== Jahr 2015 ==
== Jahr 2016 ==
= Anhang =
= Anhang =
== Zweier-Potenzen ==
== Bits und Bytes ==
== GiB, MiB, KiB im Vergleich zu GB, MB, KB ==
== GiB, MiB, KiB im Vergleich zu GB, MB, KB ==
== Java-Applets ==
== Java-Applets ==

Aktuelle Version vom 12. August 2019, 07:29 Uhr

Computerarchitektur_und_Betriebssysteme

Motivation

Hinweise für Studierende

Hinweise für Experten

Copyright

Computerarchitektur

Vom Anwender zur digitalen Schaltung

Erstmal aufschrauben

Von-Neumann-Rechner

Von-Neumann-Architektur

Von-Neumann-Flaschenhals

Komponenten eines Von-Neumann-Rechners

Zentraleinheit / CPU

Steuerwerk / Leitwerk
Rechenwerk

Speicherwerk

Ein- / Ausgabewerk

Gesamtbild eines Von-Neumann-Rechners

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

Vom Quellcode zum Prozessor

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

Einführung Betriebssysteme

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

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

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