Mein, mein liebe Leute, willkommen zum nächsten Video zur Vollesungsreihe Betriebssysteme.
Nachdem wir uns am letzten Video angeguckt haben, wie dann so ein Intel Prozessor so grob
aufgebaut ist, schauen wir uns in diesem Video den sogenannten Protected Mode an.
Das ist so der Modus, in dem heutzutage die Intel Prozessoren benutzt werden.
Also in Protected Mode, da geht es im Wesentlichen darum, Segmente zu definieren,
die MMU zu nutzen und die sogenannten Ringe, also das ist so ein Schutzmechanismus,
erkläre ich euch. Fangen wir mit den Segmenten an. Ihr kennt das, typischerweise besteht ein
Programm aus drei Segmenten. Code Segment, da steht halt der Programmtext drin. Daten,
da gehört gegebenenfalls auch der Heap dazu, die globalen Variablen und das Dexsegment.
Jedes Segment kennt ihr auch, bestehen letztendlich, alle Segmente bestehen
letztendlich aus Adresse und Länge, sprich wo im Speicher liegen sie und wie lang sind sie.
Aus Sicht des Programms, typischerweise uninteressant diese Info. Die Adresse
kenne ich als Programm nicht. Die CPU leitet mich schon in mein Segment um,
an die entsprechende Adresse, das passt. Einziger was ich beachten muss, ich darf nicht über das
Ende des Segments hinauszugreifen. Wenn ich das nicht tue, merke ich auch nicht, dass da eine
Länge definiert ist. Gut, letztes Video haben wir schon angeguckt, wie macht Intel das? Ja,
Intel definiert eine effektive Adresse, die stammt letztendlich aus der Berechnung beim Berechnen
der Adressierungsart. Also da steht dann irgendwie drin RE Zugriff, da haben wir ein Basisregister,
Indexregister und so weiter. Ihr erinnert euch, daraus ergibt sich die effektive Adresse und
bevor jetzt, bevor die CPU wirklich auf den Speicher zugreift, addiert sie jeweils noch vom
Segment die Startadresse dazu. Das ist die lineare Adresse und das ist die Adresse mit der ihr entweder
direkt zugreift auf den Speicher, physikalische Adresse, oder wenn die MMU eingeschaltet ist,
dann ist die lineare Adresse gleich der virtuellen Adresse, die dann noch umgerechnet wird.
Ja, wir haben schon beim letzten Video gesehen, dass manchmal auch Segmente sich überlappen können.
Wir hatten ja bei den verschiedenen Programmiermodellen, Speichermodellen gesehen.
Manchmal bei dem Tiny Modell, da sind dann Code, Daten und Stack alle zusammen in einem Segment
oder anderes Modell war. Code ist separat und Daten und Stack sind zusammen in einem Modell,
in einem Segment. Das kann man typischerweise frei wählen. In der Linux Welt, in der Windows Welt
macht man es heutzutage so, dass die Segmentierung nahezu ausgeschaltet ist. Ja gut, sie ist nicht
ausgeschaltet, aber die Startadresse von allen Segmenten liegt bei Null und das Limit ist auf
unendlich gesetzt. Heißt, Code, Daten und Stack liegen zusammen in einem Segment jeweils.
Wie ist das dann schematisch zu sehen? Ja, wir haben die sechs Segmentregister. Code Segment,
Daten Segment, Extra Segment, Stack Segment und noch zwei, die man für sonstige Dinge
benutzen kann, die definieren ja letztendlich, ja was ist dann mein Limit, was ist dann meine
Startadresse. Aus der Adressierungsart heraus, ihr erinnert euch, Basisadresse, Indexregister und so
weiter. Daraus wird zusammengerechnet eine effektive Adresse und die Startadresse zusammen
addiert mit der effektiven Adresse, ergibt dann unsere lineare Adresse und auf die wird dann
wirklich schreibend, lesend zugegriffen. Wenn, ja ihr seht hier, wenn das Limit oberhalb liegt,
also von da bis da darf ich zugreifen, sprich die effektive Adresse muss zwischen Null und diesem
Limit liegen. Was man heutzutage statt der Segmentierung lieber macht, ist das Seitenbasierte
Paging. Die 386 Aufwärtsprozessoren haben so eine Seitenbasierte MMU eingebaut, manchmal auch als
Paging Unit bezeichnet. Die kann man einschalten, man kann sie auch ausschalten. Dafür gibt es ein
extra Bit in einem Kontrollregister, heißt, ja früher die ersten Prozessoren von Intel hatten
halt keine MMU, dementsprechend wenn man kompatibel sein will, muss man die MMU ausschalten können,
kann man, wenn man hier eine Null reinschreibt. Und beim Booten nach dem Reset steht da auch eine Null
drin, heißt die CPU läuft mit ausgeschaltetem Paging los. MS-DOS damals kannte kein Paging,
also konnte MS-DOS dann booten. Linux oder Windows oder so, das bootet dann los und wird so ziemlich
am Anfang irgendwann hier eine 1 reinschreiben, um die MMU anzuschalten. Die anderen Register hier,
die anderen Bits in dem Register sind auch dazu gedacht, Dinge ein- und auszuschalten, also
typischerweise Extensions ein- und auszuschalten. CRT1 hatte ich schon mal gesagt, das ist zwar
Presenters
Zugänglich über
Offener Zugang
Dauer
00:48:01 Min
Aufnahmedatum
2020-11-27
Hochgeladen am
2020-12-04 17:28:55
Sprache
de-DE
7. Kapitel der Vorlesung Betriebssysteme.