Praktische Einführung mit Virtualisierung
Stefan Bosse
Universität Koblenz - FB Informatik
Stefan Bosse - Grundlagen der Betriebssysteme - Modul S Rechner- und Prozessorgrundlagen ::
Wie funktioniert ein Rechner?
Stefan Bosse - Grundlagen der Betriebssysteme - Modul S Rechner- und Prozessorgrundlagen ::
Wie funktioniert ein Rechner?
Wie werden Programme von einem Rechner verarbeitet?
Stefan Bosse - Grundlagen der Betriebssysteme - Modul S Rechner- und Prozessorgrundlagen :: Grundmodell eines Rechners
Die meisten heute gebauten Computersysteme beruhen auf der Aufbaustruktur des Von-Neumann-Rechners, die John von Neumann 1946 aufgestellt hat. Seltener kommt die alternative Struktur des Harvard-Rechners zum Zug, benannt nach der Struktur des Mark-I-Rechners an der Harvard University (1939-44).
Stefan Bosse - Grundlagen der Betriebssysteme - Modul S Rechner- und Prozessorgrundlagen :: Grundmodell eines Rechners
Der Von-Neumann-Rechner besteht aus vier Funktionseinheiten:
bsdp
Funktionsblöcke des Von-Neumann-Rechners
Stefan Bosse - Grundlagen der Betriebssysteme - Modul S Rechner- und Prozessorgrundlagen :: Grundmodell eines Rechners
Stefan Bosse - Grundlagen der Betriebssysteme - Modul S Rechner- und Prozessorgrundlagen :: Grundmodell eines Rechners
bsdp
Betriebssystem und Von-Neumann-Rechner
Stefan Bosse - Grundlagen der Betriebssysteme - Modul S Rechner- und Prozessorgrundlagen :: Prozessoraufbau
bsdp
Schematischer Prozessoraufbau
Stefan Bosse - Grundlagen der Betriebssysteme - Modul S Rechner- und Prozessorgrundlagen :: Register
Stefan Bosse - Grundlagen der Betriebssysteme - Modul S Rechner- und Prozessorgrundlagen :: Register
Beispiele von CPU-Registern
Stefan Bosse - Grundlagen der Betriebssysteme - Modul S Rechner- und Prozessorgrundlagen :: Grundlagen der Programmausführung
Rechnereinteilung nach Adressanzahl: gezählt wird die Anzahl Operanden eines dyadischen Operators (z.B. einer Addition)
Stefan Bosse - Grundlagen der Betriebssysteme - Modul S Rechner- und Prozessorgrundlagen :: Grundlagen des Adressraums
Der Zugriff auf die Befehle eines Programms erfolgt ebenso wie auf alle im Speicher abgelegten Operanden mittels Speicheradressen. Die Organisation des Adressraums stellt damit eine wichtige Eigenschaft und allenfalls auch Limitierung einer bestimmten Rechnerplattform sowie des Betriebssystems dar.
Ein Adressraum Σ ist gekennzeichnet durch:
Stefan Bosse - Grundlagen der Betriebssysteme - Modul S Rechner- und Prozessorgrundlagen :: Grundlagen des Adressraums
Adressen sind numerische (ganzzahlige) Werte und referenzieren Speicherzellen
I.A. wird die erste Adresse mit 0, die letzte als N-1 bezeichnet.
Achtung: Die Adresse kann sich entweder auf die Speicherzelle mit der Wortbreite W oder die Elementarzelle mit der Breite B Bits (i.A. 1 Byte) beziehen!
bsdp
Grundprinzip des Adressraums, hier Byteadressierung
Stefan Bosse - Grundlagen der Betriebssysteme - Modul S Rechner- und Prozessorgrundlagen :: Adressraumtypen
Klassischer und erweiterter Von-Neumann-Rechner
Stefan Bosse - Grundlagen der Betriebssysteme - Modul S Speicher und Speicherverwaltung :: Adressraumtypen
Wie ist das Speichermodell eines Programs und Prozesses organisiert?
Stefan Bosse - Grundlagen der Betriebssysteme - Modul S Speicher und Speicherverwaltung :: Adressraumtypen
Wie ist das Speichermodell eines Programs und Prozesses organisiert?
Wie ist das Speichermodell eines Betriebssystems organisiert?
Stefan Bosse - Grundlagen der Betriebssysteme - Modul S Speicher und Speicherverwaltung :: Adressraumtypen
Wie ist das Speichermodell eines Programs und Prozesses organisiert?
Wie ist das Speichermodell eines Betriebssystems organisiert?
Wie findet Speicherverwaltung statt?
Stefan Bosse - Grundlagen der Betriebssysteme - Modul S Speicher und Speicherverwaltung :: Bytereihenfolge (byte ordering)
Ein ganz einfacher Prozessor könnte nur mit Datenwerten von 8 Bit Größe arbeiten, d.h., er würde über eine Speicheradresse stets nur ein einzelnes Byte lesen oder schreiben. Heutige Universalprozessoren unterstützen jedoch verschiedene Operandengrößen, die auch mehrere Byte umfassen können.
Varianten der Bytereihenfolge bei Mehrbyte-Datenwerten (Beispiel für 4-Byte-Wert)
Stefan Bosse - Grundlagen der Betriebssysteme - Modul S Speicher und Speicherverwaltung :: Ausrichtungsregeln im Adressraum
Die Ausrichtungsregeln (alignment rules) legen fest, auf welchen Adressen Variablen und Instruktionen liegen müssen. Sie sind maßgebend für die Programmübersetzung (Compiler, Assembler, Binder). Ihr Zweck liegt in der Erreichung optimaler Ausführungsgeschwindigkeiten auf dem benutzten Rechnersystem. Da sie von der Hardware abhängen, können sie entsprechend der benutzten Rechnerplattform variieren. Ausrichtungsregeln können sowohl für Code als auch Daten existieren.
bsdp
Fehlausrichtung im Adressraum und ihre Folgen (Beispiel für einen 32-Bit-Datenbus und einen Zugriff auf einen Datenwert von 32 Bit Größe)
Stefan Bosse - Grundlagen der Betriebssysteme - Modul S Speicher und Speicherverwaltung :: Ausrichtungsregeln im Adressraum
Stefan Bosse - Grundlagen der Betriebssysteme - Modul S Speicher und Speicherverwaltung :: Ausrichtungsregeln im Adressraum
Einfluss der Ausrichtung auf die resultierende Adressraumplatzierung (Beispiel)
Stefan Bosse - Grundlagen der Betriebssysteme - Modul S Speicher und Speicherverwaltung :: Adressraumbelegung durch Programme
Die Belegung des Adressraums durch ein Programm wird einerseits durch die Übersetzungswerkzeuge, andererseits durch das Betriebssystem festgelegt.
Im Grundsatz können etwa fünf verschiedene Bereiche unterschieden werden:
Code und Konstanten: Die zugehörigen Speicherinhalte werden aus der ausführbaren Datei in den Hauptspeicher geladen. Dieser Adressbereich ändert seine Größe während der Programmausführung nicht.
Initialisierte Daten: Ein passender Bereich des Adressraums wird reserviert und anschließend werden die Initialwerte der Variablen aus der ausführbaren Datei dorthin geladen. Dieser Adressbereich ändert seine Größe während der Programmausführung nicht.
Nicht initialisierte Daten: Ein passender Speicherbereich wird reserviert und eventuell gelöscht (d.h. mit 0 geladen). Dieser Adressbereich ändert seine Größe während der Programmausführung nicht.
Stefan Bosse - Grundlagen der Betriebssysteme - Modul S Speicher und Speicherverwaltung :: Adressraumbelegung durch Programme
Das Wachstum ist aber nur ungefährlich, solange sich die Heap- und Stack-Inhalte nicht überschneiden. Eine derartige Überschneidungssituation würde zu einem Fehler führen. Die Kunst liegt darin, diese Bereiche ausreichend groß zu wählen und eine mögliche Fehlsituation erkennen zu können. Ein Betriebssystem und/oder ein Laufzeitsystem einer Programmiersprache können hier allenfalls Hilfe anbieten, um Fehlsituationen zu erkennen.
Stefan Bosse - Grundlagen der Betriebssysteme - Modul S Speicher und Speicherverwaltung :: Adressraumbelegung durch Programme
Alternative Layouts des Adressraums eines Programms (oder Prozesses als Programm in Ausführung)
Stefan Bosse - Grundlagen der Betriebssysteme - Modul S Speicher und Speicherverwaltung :: Adressraumnutzung durch C-Programme
Für die Programmierung ist es hilfreich, die Platzierungsregeln für Variablen in der Programmiersprache C zu kennen. Nachfolgend sind sie kurz aufgeführt:
Stefan Bosse - Grundlagen der Betriebssysteme - Modul S Speicher und Speicherverwaltung :: Adressraumnutzung durch C-Programme
malloc()
oder calloc()
, Freigabe mittels der Bibliotheksfunktion free()
. In C++ leisten die Operatoren new
und delete
Vergleichbares.Stefan Bosse - Grundlagen der Betriebssysteme - Modul S Speicher und Speicherverwaltung :: Adressraumnutzung durch C-Programme
Stefan Bosse - Grundlagen der Betriebssysteme - Modul S Speicher und Speicherverwaltung :: Adressraumnutzung durch C-Programme
int x=0;int foo(int x) { int t=x; return t+1;}int main() { int y; int *yp; y=foo(x); yp=(int*)malloc(sizeof(int)); *yp=y;}
Beispiel eines C Programms