Sie sind auf Seite 1von 63

24.8.

2021 01744-PC-Technologie

Ziele von Betriebssystemen: Benutzerfreundlichkeit - Benutzer eines Rechensystems soll sich in erster Linie um seine
Anwendungen kümmern können
- für ihn irrelevante Details der Hardware sollten ihm verborgen bleiben
(Information Hiding), ohne dass seine Anwendungswünsche eingeschränkt
werden
- Betriebssystem stellt ihm dafür komplexe Dienste für seine Aufaben zur
Verfügung, deren Benutzung aber keine genauen Kenntnisse der Hardware
erfordert

Ziele von Betriebssystemen: Effizienz und Zuverlässigkeit - für effiziente Nutzung des Rechensystems wird möglichst intensive,
parallele Nutzung aller Hardwarekomponenten gefordert
- Zeiten, in den Prozessor im idle-Modus ist, sollen möglichst klein sein
- Zuverlässigkeit wird durch Schutzmechanismen realisiert (bspw.
Speicherschutz)
- Betriebssystem muss außerdem Fehler und Ausnahmesituationen möglichst
abfangen (Exception Handling); Fehler dürfen nicht zu
Systemzusammenbruch führen

Prozess - ist ein Ausführung befindliches oder ausführbereites Programm mit seinen
Daten (Variablen und Konstanten mit ihren aktuellen Werten)

Ziele von Betriebssystemen: Portabilität - auf einem bestimmten Rechner entwickelte Software muss auch auf andere
Rechensysteme übertragen werden können (bspw. Standardsoftware)
- Betriebssystem stellt eine allgemeine und abstrakte Schnittstelle zur
Hardware dar und erleichtert so Portabilität

Hauptaufgaben von Betriebssystemen - Auftragsverwaltung


- Speicherverwaltung
- Betriebsmittelverwaltung

Welche Zustände kann ein Prozess annehmen? - aktiv (running): Prozess wird gerade vom Prozessor bearbeitet
- blockiert (suspended): Prozess muss auf bestimmtes Ereignis warten, bspw.:
Ende einer Ein-/Ausgabeoperation, Einlagerung von Daten in Hauptspeicher,
auf anderen Prozess
- bereit (ready): Prozess ist bereit vom Prozessor ausgeführt zu werden und
muss insb. auf kein Ereignis warten

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 1/63
24.8.2021 01744-PC-Technologie

Dispatcher - bewerkstelligt das Umschalten der CPU auf verschiedene Aufträge

Arbeitsweise:
- wenn Prozess in Zustand "blockiert" übergeht, kann CPU von diesem nicht
mehr genutzt werden
- Disptacher kann nun der CPU einen "bereiten" Prozess zuteilen
- Prozessor bleibt so beschäftigt und System wird effizienter genutzt
- sobald Ereignis eingetroffen ist, das einen Prozess in Zustand "blockiert"
versetzt hat, kann er ggf. wieder vom Prozessor ausgeführt werden (geht also
in Zustand "bereit" über)

Abbildung: Übergänge zwischen den verschiedenen Prozesszuständen

Wozu dient das virtuelle Speichermanagement? - soll den Hauptspeicher-Engpass kompensieren (gerade wenn viele Prozess
im Hauptspeicher eingelagert sind und dieser dann ggf. nicht mehr ausreicht)
- nutzt außerdem die Lokalitätseigenschaft von Programmen

Lokalitätseigenschaft von Programmen (Locality of Reference) - man versteht darunter die Beobachtung, dass Prozesse während ihrer
Ausführung im Allgemeinen nicht ständig sämtliche Daten und gesamten
Programmcode nutzen, sondern in jedem Zeitintervall jeweils nur einen
kleinen Teil davon
- dadurch ist es ausreichend nur den momentan benötigten Anteil an
Programmcode und Daten (Arbeitsmenge, Working Set) in den
Hauptspeicher einzulagern
- restlichen Teile des Programms sowie nicht benötigten Daten befinden sich
im Hintergrundspeicher (Peripheriespeicher)

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 2/63
24.8.2021 01744-PC-Technologie

Was passiert, wenn ein Prozess Programmteile oder Daten benötigt, die sich - die Daten werden dann vom Hintergrundspeicher in den Hauptspeicher
nicht im Hauptspeicher befinden? eingelagert (Swapping und als Spezialform Paging)

Abbildung: Grundkonzept virtueller Speicherverwaltung

Die Wahl der Arbeitsmenge legt fest, wie oft Daten aus dem - wenn Arbeitsmenge zu klein gewählt wird, dann müssen bei
Hintergrundspeicher in den Hauptspeicher eingelagert werden müssen. Auftragsausführung fast ständig Daten vom Hintergrundspeicher eingelagert
werden (im Extremfall ist das System nur noch mit dem Einlagern
beschäftigt -> Thrashing (Seitenflattern))
- wenn Arbeitsmenge zu groß gewählt wird, dann sind für das Programm
mehr Daten im Hauptspeicher eingelagert, als eigentlich gerade benötigt
werden; Rechensystem wird in diesem Fall nicht effizient genutzt, da es
wegen Speicherplatzmangels weniger Aufgaben als eigentlich möglich
parallel abarbeiten kann
✔ Richtig
Falsch

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 3/63
24.8.2021 01744-PC-Technologie

Was ist die Hauptaufgabe der virtuellen Speicherverwaltung? -> die Umsetzung virtueller (logischer) Adressen in physikalische Adressen

- virtuelle Adressen bezeichnen noch nicht den Ort des gesuchten Objektes
im Hauptspeicher, lässt sich erst während der Ausführungszeit des Auftrags
bestimmen, wenn Stelle des Hauptspeichers feststeht, an der benötigten
Programme oder Daten eingelagert werden (erst dann wird virtuelle auf
physikalische Adresse abgebildet)

Was wird formal durch die MMU realisiert? - die s.g. Speicherabbildungsfunktion
- physikalischer Adressraum ist sehr viel kleiner als virtueller

Abbildung: Bestimmung physikalischer Adressen

Virtuelle Speicherverwaltung: Segmentierung - virtueller Adressraum wird in Segmente verschiedener Länge unterteilt
- jedem Prozess sind ein oder mehrere Segmente zugeordnet (bspw. für
Programmcode und Daten)
- einzelnen Segmente enthalten logisch zusammenhängende Informationen
und können relativ groß sein
- jeder Auftrag kommt in der Regel mit relativ kleinen Anzahl von
Segmenten aus
- Anzahl Segemente wird durch Benutzer oder Compiler festgelegt

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 4/63
24.8.2021 01744-PC-Technologie

Virtuelle Speicherverwaltung: Aufteilung in Seiten (Paging) - logische und physikalische Adressraum wird in Segmente fester Länge
(Seiten) unterteilt
- physikalische Seiten im Hauptspeicher sind die Rahmen
- Kapazität einer Seite ist relativ klein (typisch sind 256 byte bis 8 kB), so
dass jeder Auftrag eine Vielzahl von Seiten benötigt
- Aufteilung des Adressraums in Seiten ist für Benutzer vollständig
transparent (wird also vom Betriebssystem mit entsprechender
Hardwareunterstützung durchgeführt, ohne dass Benutzer etwas davon merkt
und sich darum kümmern muss)

Welche drei Problemkreise ergeben sich für das Betriebssystem bzgl. dem - Einlagerungszeitpunkt
Austausch von Daten zwischen Haupt- und Hintergrundspeicher? - Zuweisungsproblem
- Ersetzungsproblem

Probleme der virtuellen Speicherverwaltung: Einlagerungszeitpunkt - Betriebssystem muss festlegen, wann Daten in Hauptspeicher eingelagert
werden
- geschieht normalerweise ausschließlich auf Anforderung (bei
Segmentierungs- und Seitenwechselverfahren), d.h. Daten werden dann
eingelagert, wenn auf sie zugegriffen wird und sie sich nicht im
Arbeitsspeicher befinden
- Seitenfehler: passiert, wenn auf Seite zugegriffen wird, die nicht im
Hauptspeicher vorhanden ist

Probleme der virtuellen Speicherverwaltung: Zuweisungsproblem - Betriebssystem muss Strategie haben die festlegt, an welcher Stelle des
Arbeitsspeichers nicht vorhandene Daten eingelagert werden

Zuweisungsproblem bei Segmentierungsverfahren - für jedes einzulagernde Segment stellt sich das Problem im Arbeitsspeicher
eine ausreichend große Lücke zu finden (also einen zusammenhängenden
freien Speicherbereich)
- Lücken entstehen, wenn nicht mehr benötigte Segmente ausgelagert werden
- Auslagerung wird bspw. dann ausgeführt, wenn Datei geschlossen wird
oder ein Prozess terminiert
- Segemente enthalten keine einheitliche Größe, daher wird für
einzulagerndes Segment im Allgemeinen keine Lücke gefunden, die exakt
passt

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 5/63
24.8.2021 01744-PC-Technologie

Strategien zur Zuweisung von von Segmenten - first-fit: Lücken sind nach aufsteigenden Anfangsadressen geordnet;
Segment wird in erste Lücke eingelagert, in die es hineinpasst
- best-fit: Segment wird in kleinste Lücke eingelagert, in die es gerade noch
hineinpasst
- worst-fit: Segement wird stets in die größte der zur Verfügung stehenden
Lücken eingelagert

-> Speicher zerfällt bei allen Strategien nach und nach in belegte und
unbelegte Speicherbereiche (externe Fragmentierung!)

Externe Fragmentierung - es gibt viele Lücken, die so klein sind, dass kaum ein Segment mehr
hineinpasst
- der zur Verfügung stehende Speicherbereich hat sich faktisch um diese
Bereiche verkleinert

Abbildung: Externe Fragmentierung bei einem segmentierten Speicher

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 6/63
24.8.2021 01744-PC-Technologie

Wie lässt sich externe Fragmentierung des Hauptspeichers beheben? - durch eine vom Betriebssystem regelmäßig durchgeführte
Speicherverdichtung (Kompaktierung)

-> alle im Speicher vorhandenen Daten werden so verschoben, dass ein


zusammenhängender belegter und ein zusammenhängender freier
Speicherbereich entstehen
-> nach Kompaktierung gibt es also keine Speicherfragmente mehr (bis zu
den nächsten Segment-Ein-/Auslagerungen

Warum stellt sich beim Seitenwechselverfahren das Zuweisungsproblem - weil die Größe aller belegten und freien Speicherbereiche ganzzahlige
nicht? Vielfache einer Seitengröße sind

-> für jede einzulagernde Seite gibt es also immer eine genau passende
Lücke, denn es werden stets Segemente fester Länge zwischen Hintergrund-
und Arbeitsspeicher ausgetauscht
-> externe Fragmantierung existiert bei diesem Verfahren also nicht

Interne Fragmentierung - tritt bei Seitenwechselverfahren auf


- Datenmengen eines Auftrags entsprechen in der Regel nicht dem Vielfachen
einer Seitengröße
- damit wird die letzte Seite eines Programms meist nicht vollständig genutzt

Verdrängungs-/Ersetzungsstrategien - FIFO: es wird die Seite ersetzt, die sich am längsten im Arbeitsspeicher
befindet
- LIFO: es wird die zuletzt eingelagerte Seite ersetzt
- LRU: es wird die Seite ausgelagert, auf die die längste Zeit nicht mehr
zugegriffen wurde
- LFU: es wird die Seite ersetzt, auf die seit ihrer Einlagerung am seltensten
zugegriffen wurde

-> zusätzlich werden Seiten als Opfer bevorzugt, die während ihrer
Einlagerungsdauer nicht verändert worden sind

Was muss mit Daten im Hauptspeicher passieren, wenn eine/mehrere -> Daten, die durch Prozess geändert wurden, müssen vor Ersetzung in
zugehörige Seiten ausgelagert werden sollen? Hintergrundspeicher zurückgebracht werden

Wie kann die mittlere Zugriffszeit zum Hauptspeicher erheblich reduziert - durch Einsatz eines Cache-Speichers
werden?

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 7/63
24.8.2021 01744-PC-Technologie

Abbildung: Zusammenspiel zwischen Cache und MMU

a) virtueller Cache
b) physikalischer Cache
c) Mischform

- virtueller Cache (a): wird zwischen CPU und MMU gelegt; in ihm werden
höhewertigen Bits der logischen Adressen als Tags abgelegt
- physikalischer Cache (b): wird zwischen MMU und Speicher eingesetzt; in
ihm werden höherwertigen Bits der durch die MMU berechneten
physikalsichen Adressen gespeichert
- Mischform (c): hier kann bspw. eine Adressierung eines Eintrags im Cache
durch einen Teil (Index) der virtuellen Adresse, der eingetragene Adressteil
(Tag) aber von physikalischen Adresse gewonnen werden

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 8/63
24.8.2021 01744-PC-Technologie

Was ist der Vorteil/Nachteil des virtuellen Cache? - Vorteil: bei den (meist mit hoher Wahrscheinlichkeit) auftretenden Treffern
wird MMU nicht benötigt und damit wird keine Verzögerung durch
Adressberechnung der MMU verursacht
- Nachteile: logischer Adressraum ist in der Regel sehr viel größer als der
physikalische und daher müssen stets mehr Bits einer Adresse als Tag
gespeichert werden als beim physikalischen Cache; weiterer Nachteil: wenn
Cache und MMU auf Prozessorchip realisiert sind besteht keine Möglichkeit
den virtuellen Cache außerhalb des Chips zu vergrößern und so höhere
Trefferrate zu erzielen (beim physikalischen Cache ist dies jedoch ohne
weiteres möglich)

Was ist ein Segment? - ein zusammenhängender Speicherbereich variabler Länge


- durch häufige Trennung von Code und Daten wird zwischen Code- und
Daten-Segmenten unterschieden
- maximale Größe bei x86-Prozessorgen: 4 GB

Abbildung: Darstellung der Adressierung bei einem segmentierten Speicher

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 9/63
24.8.2021 01744-PC-Technologie

Wie wird ein Speicherwort im 32-bit-Modus angesprochen? - durch virtuelle (logische) 48-bit-Adresse, höherwertigen 16 Bits bilden s.g.
Segment-Selektor

Worauf zeigt der Segment-Selektor? - auf einen Eintrag im Arbeitsspeicher, dem s.g. Segment-Deskriptor, der u.a.
die Basisadresse des Segmentes enthält, in dem sich das gesuchte
Speicherwort befindet

Was legen die niederwertigen 32 Bits der virtuellen Adresse fest? - legen als Offset die genaue Position des Wortes innerhalb des selektierten
Segments

Was ist die lineare Adresse? - die aus Segment-Basisadresse und Offset gebildete 32-bit-Adresse

Wie lang sind Adressen im 64-bit-Modus? - virtuelle Adresse: 80 Bit


- Offset und lineare Adresse: jeweils 64 Bit

Wo werden die Deskriptoren aller Segmente zusammengefasst? - in den Segment-Deskriptor-Tabellen

Abbildung: Selektor einer virtuellen Adresse

- Indexfeld und Tabellenindikator (TI) spezifizieren den Eintrag in


Deskriptor-Tabelle, in dem für das angesprochene Segment der Deskriptor
abgelegt ist
- Index gibt für ausgewähltes Segment die Nummer des Eintrags in
Desktiptor-Tabelle an

Was bestimmt der Tabellenindikator (TI)? - ob die virtuelle Adresse zum globalen Adressraum aller Prozesse oder
lokalen Adressraum eines bestimmten Prozesses gehört (für beide
Adressräume werden getrennte Deskriptor-Tabellen verwaltet)

Was geben die Requested Privilege Level (RPL)-Bits im Selektor an? - eine Privileg-Ebene die ein Befehl besitzen muss, um überhaupt auf das
gewünschte Segment zugreifen zu dürfen

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 10/63
24.8.2021 01744-PC-Technologie

Wegen der Lokalitätseigenschaft wird normalerweise nicht bei jedem Zugriff - daher werden für längere Zeit dieselben Segment-Selektoren benötigt und
zum Arbeitsspeicher ein neues Segment benutzt. es ist aus Geschwindigkeitsgründen sinnvoll, diese in speziellen
Segmentregistern abzuspeichern

-> Speicherwort wird dann nicht durch Angabe der vollständigen virtuellen
Adresse im Befehl adressiert, sondern durch Segmentregister und Offset
✔ Richtig
Falsch

Wie lässt sich die Adressierung noch weiter erleichtern? - lässt sich dadurch erleichtern, dass jedes der Segmentregister für bestimmte
Segmenttypen (Code-Segment, Stack-Segment, Daten-Segment etc.)
zuständig ist

-> dadurch kann bei meisten Speicherzugriffen auf explizite Angabe des
Segmentregisters verzichtet werden, denn Prozessor erkennt anhand des
Befehls, ob bspw. Zugriff auf Befehlscode oder Operanden stattfindet

Abbildung: Segmentregister

- zeigt sechs Segmentregister, die x86-Prozessor dem Benutzer bereitstellt

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 11/63
24.8.2021 01744-PC-Technologie

Was passiert wenn ein neuer Selektor in eines der Segmentregister - es werden automatisch von der Prozessorhardware wichtige Informationen
geschrieben wird? über das ausgewählte Segment, die in den Segment-Deskriptoren abgelegt
sind, in einen fest zugeordneten, "verstecken" Puffer (Segment-Deskriptor-
Puffer) geschrieben (Hidden Descriptor Cache Shadow Register)

Was enthält der Deskriptor-Puffer? - insb. die Basisadresse des Segments im Arbeitsspeicher (64 bit lang im 64-
bit-Modus, 32 bit lang im 32-bit-Modus)

-> durch diesen Puffer kann Segment bearbeiten, ohne für jeden Befehl
zeitaufwendig auf Segment-Deskriptor im Arbeitsspeicher zuzugreifen

Wie erfolgt das Laden der Segmentregister mit neuen Selektoren? - direkt durch spezielle Ladebefehle oder
- indirekt bei Unterprogramm-Aufrufen bzw. Rücksprüngen,
Ausnahmebehandlungen oder Sprüngen über Segmentgrenzen hinweg (Jump
Far)

CS-Register (Code-Segment) - jede Instruktion ist in CS abgespeichert


- enthält Selektor und Deskriptor für Segment, in dem der aktuell benutzte
Programmcode abgelegt ist
- beim Laden eines Befehls (Instruction Fetch, OpCode Fetch) wird
automatisch der Selektor aus diesem Register benutzt
- Offset des gewünschten Befehls zum Segmentanfang wird durch
Befehlszähler IP (Instruction Pointer) spezifiziert
- Addition der Segment-Basisadresse im CS-Register und des Inhalts von IP
gibt vollständige Adresse (32 bzw. 64 Bit) für den neu zu ladenden
Befehlscode
- Änderung des Inhaltes eines CS-Registers und damit Wechsel zu neuem
Code-Segment kann nur indirekt durch Interrupts, Traps, Exceptions oder
Sprünge zu virtuellen Adressen in anderen Segmenten (Jump Far) erfolgen
- Segmentregister CS kann also nicht direkt, bspw. durch Transferbefehl
(MOVE), neu gesetzt werden

SS-Register (Stack-Segment) - wird bspw. für Unterprogramm-Aufrufe eines Prozesses benötigt


- Stack beansprucht Speicherplatz, für den ebenfalls ein bestimmtes Segment
(SS) im Speicher vorgesehen ist
- Segment wird durch Selektor im SS-Register spezifiziert
- alle Stack-Operationen beziehen sich automatisch auf dieses Segment
- Adressen-Offset zum Segmentanfang wird durch Stackpointer SP festgelegt
- SS-Register lässt sich (im Gegensatz zu CS) auch explizit neu laden

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 12/63
24.8.2021 01744-PC-Technologie

DS-, ES-, FS-, GS-Register (Daten-Segmente) - Register ermöglichen es, vier verschiedene Daten-Segmente zu spezifieren,
auf die ein Programm unter Angabe der Segmentregister direkt zugreifen
kann
- wenn kein Segmentregister explizit angegeben ist, werden alle
Datenzugriffe standardmäßig auf Register DS bezogen
- Manipulation der Segmentregister ist durch Befehle mögich, die nur im
"Betriebssystemmodus" (Supervisor Mode) des Prozessors ausgeführt
werden können

Abbildung: Zugriff auf die Arbeitsmenge eines Prozesses mit Hilfe der
Segmentregister

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 13/63
24.8.2021 01744-PC-Technologie

-> jedes Segment, dessen Anfangsadresse in einem der Segmentregister


abgelegt ist, befindet sich physikalisch im Hauptspeicher, so dass darauf
unverzüglich zugegriffen werden kann
-> damit bilden die durch die Segmentregister spezifizierten Segmente de
Arbeitsmenge des Prozesses

In welchen Adressierungsmodi können die Prozessoren arbeiten? - Real Address Mode


- Protected Virtual Address Mode

-> Prozessor erkennt den Modus an einem gesetzten Bit in seinem


Statusregister MSW (Maschinenstatuswort, Machine Status Word); Bit:
Protection Enable, PE

Real Address Mode - es sind nur 20 Bit lange physikalische Adressen zugelassen
- Beschreibung der Adressberechnung -> siehe nächste Karte

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 14/63
24.8.2021 01744-PC-Technologie

Abbildung: Adressberechnung im Real Address Mode

- zeigt wie aus 16-bit-Selektor und 32-bit-Offset eine 20 bit lange


physikalische Adresse gebildet wird
- Selektor gibt 16 höherwertigen Bits der 20 Bit langen Segment-
Basisadresse an
- verbleibenden 4 Bits werden als '0000' angenommen
- durch 16 bit langen Offset können Segmente mit maximalen Länge von 64
kB angesprochen werden
- physikalische Adresse berechnet sich durch Addition von Segment-
Basisadresse und Offset

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 15/63
24.8.2021 01744-PC-Technologie

Protected Virtual Address Mode - alle erweiterten Möglichkeiten der x86-Prozessoren können damit voll
ausgeschöpft werden
- Selektor-Teil der virtuellen Adresse spezifiziert nicht direkt die
Basisadresse des Segments, sondern verweist auf den Eintrag einer im
Speicher vorhandenen Tabelle (= Segment-Deskriptor, enthält 32 bit lange
Basisadresse des Segments)

- Adressberechung -> siehe nächste Karte

Abbildung: Adressberechnung im Protected Virtual Address Mode

- um physikalische Adresse zu erhalten, wird zu Basisadresse der 32-bit-


Offset addiert, der in virtuellen Adresse angegeben ist
- Wahl der (richtigen) Tabelle (s.g. Segment-Deskriptor-Tabelle), erfolgt
automatisch durch MMU (benötigt keine zusätzliche Software)
- im 64-bit-Modus wird Basisadresse auf 64 bit erweitert

Segmentierung im 32-bit-Modus: Basic Flat Model - gesamte 4-GB-Adressraum wird als ein einziges Segment aufgefasst
- es müssen wenigstens ein Code- und ein Daten-Segment-Deskriptor
angelegt werden, die mit Segment-Basisadresse 0 und Segmentgrößte 4 GB
belegt werden
- dadurch findet keine Fehlerunterbrechung statt, wenn eine Adresse
außerhalb des phyiskalisch realisierten Adressraums angesprochen wird
https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 16/63
24.8.2021 01744-PC-Technologie

Segmentierung im 32-bit-Modus: Protected Flat Model - gleiche Regeln wie bei Basic Flat Model, nur wird hier Größe der Segmente
auf Größe des physikalisch realisierten Adressraums eingestellt
- es werden hier also Fehlerunterbrechungen beim Zugriff auf eine nicht
realisierte Speicheradresse ausgelöst
- physikalisch realisierter Speicher kann auch in zwei getrennte Segmente
aufgeteilt werden (Code und Daten) um so einen etwas feineren
Speicherschutz zu erhalten

Durch welche Attribute kann ein Segment beschrieben werden? - Segment-Basisadresse (Base Address)
- Segmentgrößte in Bytes (Limit)
- Zugriffsrechte (Access Rights) zur Realisierung von Schutzmechanismen
(Protections)

-> Attribute sind in Segment-Deskriptoren abgelegt, die den Segmentzugriff


steuern

Abbildung: Format des Segment-Deskriptors

-> Deskriptoren sind 8 Byte lang


-> Basisadresse des Segments ist 32 Bit lang und kann jede Adresse des
(linearen) 4-GB-Adressraums darstellen
-> Größe des Segments (Limit) wird im Deskriptor in Einheiten von 1 byte
bzw. 4 kB angegeben

Es gilt:
- kleinste Segmentadresse = Basisadresse
- größte Segmentadresse = Basisadresse + Segmentgröße (Segmentgröße ist
also größtmögliche Offset)

Segment-Deskriptor, Byte 5, Zugriffsrechte: Bit "P" (Present Bit) - zeigt an, ob sich das durch den Deskriptor beschriebene Segment im
Hauptspeicher befindet
- P=0: ist nicht im Speicher und muss durch Betriebssystem in Hauptspeicher
eingelagert werden, bevor auf Daten aus diesem Segment zugegriffen werden
kann

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 17/63
24.8.2021 01744-PC-Technologie

Segment-Deskritor, Byte 5, Zugriffsrechte: Bit "DPL" (Descriptor Privilege - ist ein Schutzmechanismus
Level) - ermöglicht, dass Segmente vor unzulässigen Zugriff direkt durch die
Hardware geschützt werden
- es gibt Privileg-Ebenen 0-3
- Segmente und Prozesse gehören stets eindeutig zu einer bestimmten
Privileg-Ebene
- es gibt genaue Zugriffsregeln die festlegen, welche Segmente von einem
bestimmten Prozess benutzt werden dürfen

Segment-Deskritor, Byte 5, Zugriffsrechte: Bit "S" (Descriptor Type Flag) - mit "1" wird gekennzeichnet, dass es sich um einen Deskriptor für Code-,
Daten- oder Stack-Segment handelt
- bei anderen Deskriptor-Arten, die zu s.g. System-Segmenten gehören, ist
Bit auf "0"

Segment-Deskritor, Byte 5, Zugriffsrechte: Bits "TYPE" (Bits 1-3) - diese drei Bits unterscheiden die verschiedenen Segmenttypen

Bit "E" (Executable Bit, #3):


- mit Bit "E" lässt sich feststellen, ob es sich um Daten-Segment (E=0) oder
Code-Segment (E=1) handelt

Bit "C/ED" (Confirming Bit bzw. Expand-Down Bit, #2):


- wenn E=1 und C=1, dann ist es ein s.g. Conforming Code Segement;
Segmente dieses Typs können auch von Prozessen mit niedrigerer Privileg-
Ebene benutzt werden; wenn C=0 ist es ein Nonconforming Code Segment
- wenn E=0 und ED=1 handelt es sich um ein Expand Down Segment
(Expand Down = Segment dehnt sich nach unten, also zu kleineren Adressen
hin aus); werden bevorzugt zur Realisierung von Stacks benutzt; Offset darf
hier größer als maximale Segmentgröße werden

Bit "R/W" (#1):


- wenn E=1 und R=1 bedeutet es, dass in diesem Segment enthaltene Wörter
gelesen werden dürfen (kann insb. nötig sein, wenn Code-Segment auch
Konstanten oder andere statische Daten enthält)
- wenn R=0 dürfen Befehle im Code-Segement nur ausgeführt werden

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 18/63
24.8.2021 01744-PC-Technologie

Segment-Deskritor, Byte 5, Zugriffsrechte: Bit "A" (Accessed Bit, Bit 0) - wird von MMU gesetzt, wenn ein Selektor, der auf diesen Deskriptor zeigt,
in ein Segmentregister geladen wird
- danach führt jeder Zugriff auf dieses Segment zum erneuten Setzen des A-
Bits
- Betriebssystem kann A-Bit in bestimmten Zeiträumen wieder zurücksetzen
und so feststellen, wie häufig auf ein bestimmtes Segment zugegriffen wurde
- mit Hilfe dieses Bits wird Ersetzungsstrategie wie bspw. LRU erleichtert

Segment-Deskriptor, Byte 6, Kontrollbits: Bit "G" (Granularity Bit, Bit 7) - definiert maximale Größe der Einheiten der Segmente
- G=0 -> 1 Byte, G=1 -> 4 kB

Segment-Deskriptor, Byte 6, Kontrollbits: Bit "D/B" (Data/Big Bit, Bit 6) - gibt bei Expand-Down-Segmenten die Größe der betrachteten
Speichereinheiten an (Big Bit)
- D=0 -> in Code- und Daten-Segmenten sind damit Adressen- und
Datenlängen auf 16 Bit begrenzt
- D=1 -> es werden 32-bit-Adressen und -Daten unterstellt
- bei Stack-Segmenten legt B die Länge des Stackpointers fest (SP: 16 bit,
ESP: 32 bit)

Segment-Deskriptor, Byte 6, Kontrollbits: Bit "L" (Bit 5) - Bit zeigt nur für Code-Segment im IA-32e-Modus an, in welcher
Betriebsart der Prozess ausgeführt wird, zu dem dieses Segment gehört
- L=0 -> kennzeichnet Prozess im Kompatibilitätsmodus
- L=1 -> kennzeichnet Prozess im 64-bit-Modus
- bei Prozessoren mit 32-bit-Architektur ist dieses Bit ohne Bedeutung und
sollte auf 0 gesetzt werden

Segment-Deskriptor, Byte 6, Kontrollbits: Bit "AV" (Available Bit, Bit 4) - Bit kann vom Betriebssystem (oder Anwendungsprogrammierer) für
beliebige Zwecke benutzt werden

Was enthält die globale Deskriptor-Tabelle / lokale Deskriptor-Tabelle? Global:


- Segmente, die von allen Prozessen gemeinsam benutzt werden

Lokal:
- ist für einen bestimmten Prozess

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 19/63
24.8.2021 01744-PC-Technologie

Globale Deskriptor-Tabelle (GDT) - enthält die Deskriptoren derjenigen Segmente, die von allen Prozessen
gemeinsam benutzt werden dürfen (bspw. Segmente mit Betriebssystemcode,
Compilern, Editoren oder ähnliche)
- Eintrag mit Nummer 0 in GDT wird von MMU nicht benutzt (Selektor mit
Index 0 wird daher als Null Segment Selector bezeichnet); kann zur
Initialisierung der Daten-Segmentregister (DS, ES, FS, GS) benutzt werden

Lokale Deskriptor-Tabelle (LDT) - enthält Segment-Deskriptoren der "privaten" Code- und Daten-Segmente
eines Prozesses, auf die nicht jeder andere Prozess Zugriff erhalten soll
- jeder Prozess kann eigene LDT besitzen
- es gibt spezielle Mechanismen, die einem Prozess kontrollierten Zugriff auf
fremde Segmente erlauben

Wo kann sich die GDT befinden? - an einer beliebigen Stelle im Hauptspeicher


- es gibt nur eine GDT in jedem System, daher ist zur Spezifikation kein
spezieller Deskriptor erforderlich

Wie erfolgt der Zugriff auf die GDT? - über spezielles Register im Prozessor (Deskriptor-Tabellen-Register, Global
Descriptor Table Register, GDTR)
- ist ein 48-bit-Register (im 64-bit-Modus 80 Bit)

Abbildung: GDT-Register

- höchstwertigen vier bzw. acht Bytes bestimmen Basisadresse, letzten zwei


Bytes die Größe der GDT

Was passiert, wenn einer neuer Prozess generiert wird? -> das Betriebssystem erzeugt für den Prozess eine LDT

Was wird in die LDT eingetragen? - alle Deskriptoren, die die Segmente des Prozesses beschreiben
- in diesen Deskriptoren werden zunächst Present Bits P zurückgesetzt
(zeigen dadurch an, dass sich die Segmente noch nicht im Hauptspeicher
befinden)
- Betriebssystem erzeugt außerdem einen Deskriptor in GDT, der auf LDT
verweist

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 20/63
24.8.2021 01744-PC-Technologie

Wenn der Prozess im Zustand ”aktiv” ist, werden vom Betriebssystem die -> anhand momentaner Hauptspeicher-Belegung bestimmt es für jedes
vom Prozess aktuell benötigten Segmente vom Hintergrundspeicher in den Segment eine geeignete Speicherlücke und legt dadurch die Basisadresse fest
Hauptspeicher geladen. -> Basisadresse wird dann im Segment-Deskriptor eingetragen und das
Segment durch das P-Bit als speicherresident gekennzeichnet
✔ Richtig
Falsch

Wodurch sind LDTs gekennzeichnet? - Basisadresse


- Größe
- Zugriffsrechte

-> Kenngrößen sind in speziellen LDT-Deskriptor gespeichert


-> können auch wie jedes Segment verschiedene Größen aufweisen und
enthalten ausschließlich Deskriptoren

Was unterscheidet eine LDT von einer GDT? - die LDT besitzt spezielle Zugriffsrechte, da eben nicht jeder Prozess auf sie
zugreifen kann

Damit der Prozessor die Basisadressen der benötigten LDTs finden kann,
müssen sämtliche LDT–Deskriptoren in der GDT abgespeichert sein. Die ✔ Richtig
Lage eines LDT–Deskriptors in der GDT kann vom Betriebssystem frei
gewählt werden. Falsch

Abbildung: LDT-Deskriptor

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 21/63
24.8.2021 01744-PC-Technologie

Abbildung: LDT-Register - LDTR

- LDTR gibt es für Zugriff auf LDT des augenblicklich aktiven Prozesses
- durch Befehl kann nur auf 16 höchstwertigen Bits des Registers direkt
zugegriffen werden, die den Selektor des aktuellen LDT-Deskriptors in der
GDT enthalten
- wird nach Prozesswechsel neuer Selektor dort eingetragen, so lädt
Prozessor automatisch aus GDT die Basisadressen, Größe der neuen LDT
sowie Zugriffsrechte in niederwertigen, "unsichtbaren" Teil des LDT-
Registers (Invisible, Hidden Descriptor Cache)

-> dadurch wird für alle folgenden Zugriffe auf die LDT das zeitaufwendige
Lesen ihres Deskriptors aus der GDT vermieden

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 22/63
24.8.2021 01744-PC-Technologie

Abbildung: Aufteilung der Datenbereiche zweier Prozesse A, B durch GDT


und LDT

- auf globalen Adressraum können beide gemeinsam zugreifen


- LDT-Register zeigt hier auf LDT von Prozess B, d.h. B ist der momentan
vom Prozessor bearbeitete Prozess
- in GDT gibt es für beide Prozesse Deskriptoren, die auf ihre LDTs
verweisen

Was legt der Tabellen-Indikator (TI) fest? - legt fest, auf welche Deskriptor-Tabelle durch den Selektor zugegriffen
werden soll
- wenn TI-Bit gesetzt wird LDT benutzt, wenn TI=0 ist gesuchte Deskriptor
in GDT
- Index gibt für ausgewähltes Segment die Nummer des Eintrags in
entsprechenden Deskriptor-Tabelle an

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 23/63
24.8.2021 01744-PC-Technologie

Abbildung: Auswahl zwischen GDT und LDT

- zeigt Auswahl eines Deskriptors durch Index und TI-Bit sowie Funktion der
Basisregister GDTR und LDTR

Besitzt auch ein Selektor eine Privileg-Ebene? - ja, und zwar die s.g. verlangte Privileg-Ebene (Requested Privilege Level,
RPL)
- ob Zugriff auf bestimmtes Segment erfolgen darf, muss Prozessor zunächst
noch prüfen
- RPL muss dazu in Abhängigkeit von Art des Segmentes (Code/Daten) in
einer vorgegebenen Relation zur Privileg-Ebene des gerade ausgeführten
Prozesses stehen

Konsequenzen für die Adressierung bei der seitenorientierten - gesamte Speicher-Adressraum wird bei Adresse 0 beginnend in ein Raster
Speicherverwaltung aus Seiten (Rahmen) fester Größe unterteilt (deshalb sind bei Basisadressen
aller Seiten die niederwertigen Bits auf 0 gesetzt)
- Einschränkung vereinfacht Verwaltung des Speichers sowie
Adressberechnung erheblich
- Lokalitätseigenschaft von Programmen kann effizienter ausgenutzt werden

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 24/63
24.8.2021 01744-PC-Technologie

Welche Adressarten kann man bei der Seitenverwaltung unterscheiden? - virtuelle (logische)
- lineare
- physikalische

-> virtuelle Adressen bestehen aus 16-bit-Selektor und 32-bit-Offset


-> werden mit Hilfe von Segment-Deskriptoren an 32 Bit lange lineare
Adressen umgesetzt
-> Deskriptoren sind in Deskriptor-Tabellen abgelegt

Werden keine Speicherseiten verwendet, dann ist die lineare Adresse auch
bereits die physikalische Adresse, mit der auf den Arbeitsspeicher ✔ Richtig
zugegriffen wird. Ist jedoch der Speicher zusätzlich in Seiten aufgeteilt, dann
werden die linearen Adressen durch die auf dem Prozessor integrierte Falsch
Seitenverwaltungseinheit (Paging Unit) in physikalische Adressen umgesetzt.

Abbildung: Berechnung physikalischer Adressen aus linearen Adressen

Welches Verfahren wird zur Bestimmung physikalischer Speicheradressen - ein zweistufiges, hierarchisches Tabellenverfahren
angewendet? - zur Adressberechnung wird das Seitentabellen-Verzeichnis (Page
Directory), die Seitentabellen (Page Tables) und die Seiten selbst benötigt
- Seitentabellen-Verzeichnis und Seitentabelle sind stets genau 4 kB groß,
Seiten selbst können 4 kB oder 4 MB groß sein

Abbildung: Berechnung physikalischer Adressen

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 25/63
24.8.2021 01744-PC-Technologie

- jede lineare Adresse wird logisch in verschiedene Teile zerlegt


- auf bestimmtes Seitentabellen-Verzeichnis wird über spezielles
Systemregister CR3 zugegriffen, in dem Basisadresse des Verzeichnisses
abgelegt ist
- höchstwertigen 10 Bits der linearen Adresse (Directory) selektieren Eintrag
in diesem Verzeichnis
- in einem Bit des Verzeichniseintrags (Page Size, PS) wird Größe der
Speichersite und ihre Adressierung festgelegt

PS=0:
- es wird 4-kB-Seite angesprochen
- Eintrag im Verzeichnis enthält höherwertigen 20 Bits der Basisadresse einer
weiteren Tabelle (Seitentabelle)
-mittleren 10 Bits der linearen Adresse (Page Table) selektieren einen der
1024 Einträge aus Seitentabelle (in diesem Eintrag stehen höherwertigen 20
Bits der Basisadresse der angesprochenen Seite)
- niederwertigen 12 Bits der linearen Adresse werden als Offset an
Basisadresse der Seite gehängt und bilden so physikalische Adresse

PS=1:
- Seite ist 4 MB groß

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 26/63
24.8.2021 01744-PC-Technologie

- Verzeichniseintrag enthält bereits höherwertigen 10 Bits der Basisadresse


der 4-MB-Seite im Speicher
- niederwertigen 22 Bits der linearen Adresse werden als Offset an
Basisadressbits angehängt (Konkatenation) und bilden so physikalische
Adresse des angesprochenen Speicherwortes

Abbildung: Systemregister zur Verwaltung der Speicherseiten

- Register wird von CPU zur Steuerung der Seitenverwaltung verwendet


- CR0: Maschinenstatuswort (MSW) ist hier gespeichert; höchstwertiges Bit
(Paging Enable, PG) wird dann gesetzt, wenn Prozessor eine
Seitenverwaltung durchführen soll
- CR2: hier wird lineare Adresse derjenigen Seite abgelegt, die zu einem
Seitenfehler geführt hat; Betriebssystem kann auf dieses Register zugreifen
um Seitenfehler zu behandeln
- CR3: hier ist Basisadresse des Seitentabellen-Verzeichnis des gerade vom
Prozessor bearbeiteten Prozesses abgelegt; bei Prozesswechsel wird
automatisch Basisadresse des neuen Seitentabellen-Verzeichnisses in Register
CR3 eingetragen

CR4:
- Bit PSE (Page Size Enable): nur wenn Bit gesetzt ist, werden 4-MB-Seiten
unterstützt und das PS-Bit in Verzeichniseinträgen ausgewertet; im anderen
Fall beschränkt sich Speicherverwaltung auf 4-kB-Seiten
- Bit PGE (Page Global Enable): wenn Bit gesetzt kann eine Seite durch G-
Bit (Global) für so wichtig erklärt werden, dass ihre einmalig ausgeführte
Adressumsetzung permanent im TLB gespeichert wird, also bspw. bei
Prozesswechsel nicht daraus entfernt wird

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 27/63
24.8.2021 01744-PC-Technologie

Wie erfolgt die Adressierung eines Eintrags im Seitentabellen-Verzeichnis? - durch Konkatenation der signifikanten Bits des CR3-Register mit den
höchstwertigen 10 Bits der linearen Adresse (Directory Teil), der die
Nummer des Eintrags im Seitentabellen-Verzeichnis enthält
- unteren beiden Bits der Adresse werden auf "0" gesetzt und zeigen so auf
erstes Byte des Eintrags

Abbildung: Einträge im Seitentabellen-Verzeichnis für 4-kB und 4-MB-


Seiten

- Unterschied beider Einträge besteht in Länge und Funktion der


angegebenen Basisadressen, genauer der höherwertigen Bits dieser Adressen
- bei 4-kB-Seiten sind sie 20 Bit lang und zeigen nicht auf Speicherseite
selber sondern auf zwischengelagerte Seitentabelle
- bei 4-MB-Seiten umfassen sie nur 10 Bit, weisen jedoch direkt auf die
selektierte Speicherseite
- Bits 0-11 enthalten Steuerinformationen zur Verwaltung und zum Zustand
der Seiten
- Unterscheidung zwischen 4-kB- und 4-MB-Seiten wird durch PS-Bit (7)
getroffen

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 28/63
24.8.2021 01744-PC-Technologie

Abbildung: Eintrag in der Seitentabelle (für 4-kB-Seiten)

- Bits 0-11 haben eine Steuerfunktion (vergleichbar mit wie


Steuerinformation wie in Seitentabellen-Verzeichnis)
- erlaubt eine sehr feine, aufgabengemäße Steuerung des Zugriffs auf die
Seiten enes laufenden Programms
- so können bspw. Zugriffsbeschränkungen auf einzelne Seiten oder ab für
alle Seiten in einer bestimmten Seitentabelle gemeinsam angesprochen
werden

Abbildung: Adressierung bei 4-kB-Seiten

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 29/63
24.8.2021 01744-PC-Technologie

- mit 20 Bit langen Basisadresse der selektierten Seiten aus Seitentabelle und
12 Bit langem Offset-Teil der linearen Adresse (Bits 0-11) lässt sich 32 Bit
lange physikalische Adresse des gesuchten Speicherwortes in der 4-kB-Seite
bestimmen

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 30/63
24.8.2021 01744-PC-Technologie

Steuerbits der Tabelleneinträge: Bit "P" (Present Bit) - zeigt an, ob spezifizierte Seitentabelle bzw. Seite im Hauptspeicher
vorhanden ist
- falls ja so kann Adressberechnung durchgeführt werden
- falls nein -> Seitenfehler und gewünschte Seite muss durch Betriebssystem
eingelagert werden
- Bit wird nur vom Betriebssystem manipuliert, nicht von MMU selbst

Steuerbits der Tabelleneinträge: Bit "U/S" (User/Supervisor Bit) - bei Zugriff auf Speicherseiten wird nur zwischen zwei Privileg-Ebenen
unterschieden
- wenn U/S=1 dürfen alle Prozesse auf Seite zugreifen (Benutzermodus, User
Mode)
- wenn U/S=0 ist nur Prozessen der Privileg-Ebenen 0-2 Zugriff auf die Seite
erlaubt (Systemmodus, Supervisor Mode)
- U/S-Bit im Eintrag eines Seitentabellen-Verzeichnis bezieht sich auf alle in
der selektierten Seitentabelle angegebenen Seiten und nicht auf selektierte
Seitentabelle selbst
- erlaubt also die Privileg-Ebene für eine ganze Gruppe von Seiten
festzulegen
- Prozesse im User Mode dürfen nur dann auf Seite zugreifen, wenn im PDE
und PTE das U/S-Bit gesetzt ist

PDE = Page Directory Entry (Eintrag in Seitentabellen-Verzeichnis)


PTE = Page Table Entry (Eintrag in Seitentabelle)

Steuerbits der Tabelleneinträge: Bit "R/W" (Read/Write Bit) - bei Speicherseiten wird nicht zwischen Code- und Datenseiten
unterschieden
- durch R/W-Bit wird aber geregelt, ob im Benutzermodus auf eine Seite, die
durch U/S=1 gekennzeichnet ist, nur lesender oder auch schreibender Zugriff
erfolgen darf
- nur wenn R/W-Bit gesetzt kann Seite auch beschrieben werden
- für Seiten die durch U/S=0 geschützt sind hat dieses Bit keine Bedeutung;
dürfen immer gelesen oder beschrieben werden, aber nur im Systemmodus
- R/W-Bit bezieht sich im Eintrag eines Seitentabellen-Verzeichnisses auf alle
in der selektierten Seitentabelle angegebenen Seiten und nicht auf selektierte
Seitentabelle selbst (erlaubt also die Privileg-Ebene für ganze Gruppe von
Seiten festzulegen)

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 31/63
24.8.2021 01744-PC-Technologie

Steuerbits der Tabelleneinträge: Bit "A" (Accessed Bit) - Bit wird von Betriebssystem nach dem Laden einer Seitentabelle bzw.
Speicherseite in Arbeitsspeicher zurückgesetzt
- nach jedem Zugriff auf diese Seitentabelle oder Speicherseite wird durch
MMU das A-Bit im zugehörigen Eintrag des Seitentabellen-Verzechnisses
bzw. Seitentabelle gesetzt
- Rücksetzen des Bits ist nur durch Betriebssystem möglich
- mit Hilfe des Bits kann Betriebssystem feststellen, auf welche Seiten schon
lange nicht mehr zugegriffen wurde (kann damit also entscheiden, welche
Seite als nächste ausgelagert werden kann)

Steuerbits der Tabelleneinträge: Bit "D" (Dirty Bit) - wird nur in Einträgen der Seitentabelle oder denjenigen des Seitentabellen-
Verzeichnisses, die auf 4-MB-Seiten zeigen, benutzt um anzuzeigen, dass in
entsprechenden Seite ein Speicherwort verändert worden ist
- wurde durch Betriebssytem nach dem Einlagern in Arbeitsspeicher gelöscht
und beim ersten Schreibzugriff durch MMU gesetzt
- auch danach ist Löschen des Bits nur durch Betriebssystem möglich
- Inhalt sehr vieler Seiten (bspw. Seiten die Programmcode enthalten) wird
während Einlagerung im Arbeitsspeicher nicht verändert
- diese Seiten, die durch gelöschtes D-Bit gekennzeichnet sind, müssen
deshalb bei Ersetzung durch andere Seiten nicht in Hintergrundspeicher
zurückgeschrieben werden

Steuerbits der Tabelleneinträge: Bit "AVL" (Available Bit) - belegt in Einträgen des Seitentabellen-Verzeichnisses für 4-kB-Seiten die
Position des D-Bits
- kennzeichnet eine Seitentabelle als für das Betriebssystem benutzbar
(available), d.h. im Arbeitsspeicher verfügbar

Steuerbits der Tabelleneinträge: Bit "PCD" (Page-Level Cache Disable) - legt fest, ob Speicherwörter einer Seitentabelle der einer Seite in den/einen
Cache eingelagert werden dürfen oder nicht
- im Steuerregister CR3 findet sich ein PCD-Bit mit derselben Funktion für
das Seitentabellen-Verzeichnis

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 32/63
24.8.2021 01744-PC-Technologie

Steuerbits der Tabelleneinträge: Bit "PWT" (Page-Level Write-Through) - durch PWT-Bit wird für Seitentabelle oder Seite, die durch PCD-Bit für
Einlagerung im Cache freigegeben ist, die Cache-Strategie festgelegt:
Durchschreib- oder Rückschreibverfahren (Write-Through bzw. Write-Back)
- in Steuerregister CR3 findet sich ein PWT-Bit mit derselben Funktion für
das Seitentabellen-Verzeichnis
- Bits PCD und PWT haben nur dann die beschriebene Funktion, wenn im
Steuerregister CR0 das Bit CD (Cache Disable) zurückgesetzt ist (Caching
also erlaubt ist)

Steuerbits der Tabelleneinträge: Bit "PS" (Page Size) - legt fest, ob Eintrag auf Seitentabelle für 4-kB-Seiten (PS=0) oder direkt auf
4-MB-Seite (PS=1) verweist

Steuerbits der Tabelleneinträge: Bit "PAT" (Page Attribute Table) - ist Zuordnung von verschiedenen (physikalischen) Speichertypen zu
bestimmten Seiten des Adressraums
- bei x86-Prozessoren werden durch Bits OAT, PWT und PCD ein
bestimmter Eintrag in Seitenattributstabelle selektiert und dadurch ein
Speichertyp festgelegt
- PAT=0 -> zeigt an, dass Prozessor kein PAT unterstützt

Steuerbits der Tabelleneinträge: Bit "G" (Global) - durch G-Bit soll dafür gesorgt werden, dass auf wichtige Seiten im Speicher
möglichst schnell zugegriffen werden kann
- geschieht dadurch, dass Adressumrechnungen für ihre Daten nur ein
einziges Mal durchgeführt und danach "permanent" gespeichert werden
- G-Bit hat nur dann eine Funktion, wenn im Steuerregister CR4 das
entsprechende Bit PGE (Page Global Enable) gesetzt ist
- Beispiel für wichtige Seiten: Seiten, die häufig benutzte Teile des
Betriebssystemkerns enthalten

Steuerbits der Tabelleneinträge: Bits "BS" (Bits 9-11) - stehen dem Betriebssystem zur freien Verfügung
- dort können zusätzliche Informationen über die Seite/Seitentabelle
abgespeichert wrden

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 33/63
24.8.2021 01744-PC-Technologie

Abbildung: Adressberechnung in der 64-bit-Architektur

- logische Adressen mit 64-bit-Länge werden in physikalische 48-bit-


Adressen übersetzt
- ober 16 Bit der logischen Adresse geben lediglich das Vorzeichen der 48-
bit-Adresse wieder

Was muss vor Eintritt in den IA-32e-Modus gemacht werden? - die Erweiterung der Adressumsetzung muss durch das Setzen des PAE-Bits
(Physical Adress Extension Bit) im Steuerregister CR4 aktiviert werden

-> dadurch werden Seitentabellenverzeichnis- und Seitentabellen-Einträge


von vier auf acht Byte (also von 32 auf 64 Bit) verlängert

Abbildung: Einträge der Tabellen im IA-32e-Modus für 4-kB-Seiten und 2-


MB-Seiten

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 34/63
24.8.2021 01744-PC-Technologie

Wesentliche Änderungen und Ergänzungen:

Bit 63 (Excute Disable Bit):


- legt fest, ob die Daten, die in angesprochenen Seiten abgelegt sind, als ein
ausführbares Programm behandelt werden dürfen oder nicht
- dient der Abwehr gegen Versuche von Schadsoftware, über eingeschleuste
Daten, die dann als Programm ausgeführt werden, Schaden im Rechner
anzurichten

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 35/63
24.8.2021 01744-PC-Technologie

Bits 52-62:
- stehen dem Entwickler von Systemsoftware bzw. dem Betriebssystem für
eigenen Anwendungen zur Verfügung

- Länge der Basisadresse wird durch Wert (MPA, Maximal Physical Address)
vorgegeben und ist wenigstens 40 Bit lang

- alle Tabellen enthalten nun einheitlich die Bits P, R/W U/S, PCD und A

Womit kann die Adressberchnung beschleunigt werden? - durch Verwendung eines schnellen Cache-Speichers, dem Translation
Lookaside Buffer (TLB)
- Prozessor lädt automatisch die zuletzt benutzten Einträge (je nach Prozessor
32-128) aus Seitentabellen-Verzeichnis und Seitentabelle in den Cache

TLB: Cache Hit - bei jeder linearen Adresse, die in physikalische umgesetzt werden muss,
wird zunächst geprüft, ob die durch die höchstwertigen 20 Bits der linearen
Adresse (als Tag) spezifizierten Tabelleneinträge im Cache sind
- falls ja -> Cache Hit
- Seitentabellen-Verzeichnis und Seitentabelle werden nicht benötigt,
Basisadresse der Seite befindet sich im TLB

-> nur bei Cache Miss muss physikalische Adresse mit Hilfe der Tabellen
bestimmt werden

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 36/63
24.8.2021 01744-PC-Technologie

Abbildung: Benutzung eines TLBs zur Beschleunigung der


Adressberechnung

Wer kann auf den TLB zugreifen? - Zugriff ist nur auf höchster Privilegien-Stufe möglich, also nur das
Betriebssystem

Wann wird ein Eintrag im TLB als ungültig erklärt? - sobald der entsprechende Tabelleneintrag geändert wird
- erfolgt durch das Betriebssystem
- ist insb. der Fall, wenn das P-Bit (Present Bit) auf 0 gesetzt wird
(zugehörige Seite also ausgelagert wird)

Wodurch wird ein vollständiges Leeren des TLB ausgelöst (Flushing)? - jede Änderung der Adresse im CR-Register, die ja zur Auswahl eines neuen
Seitentabellen-Verzeichnisses führt, verursacht das Leeren

-> vor dem Löschen sind nur die Einträge geschützt, deren zugehörige Seiten
in ihrem Eintrag in der Seitentabelle das G-Bit (Global) gesetzt haben (sofern
außerdem im Steuerregister CR4 das PGE-Bit (PAge Global Mode) auf 1
gesetzt ist)
-> einzelne TLB-Einträge (auch die die G-Bit gesetzt haben) können (vom
Betriebssystem durch speziellen Befehl (INVLPG, Invalidate TLB Entry)
gelöscht werden

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 37/63
24.8.2021 01744-PC-Technologie

Abbildung: Berechnung physikalischer Adressen mit Hilfe von Segment- und


Seitentabellen

- zeigt in kombinierte Form, wie im 32-bit-Modus die virtuellen Adressen


zunächst mit Hilfe der Segmenttabellen und dann mit zweistufigen
Seitentabellen-Verwaltung in physikalische Adressen umgewandelt werden

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 38/63
24.8.2021 01744-PC-Technologie

Abbildung: Funktion der Segmentregister und des TLBs

- Lokalitätseigenschaft typischer Programme stellt sicher, dass bei


überwiegenden Mehrzahl aller Berechnungen der hier fett eingezeichnete
Weg genommen wird
- gestrichelten Umwege über Segmentierungs- und Paging-Einheiten mit
ihren vielfältigen Tabellenzugriffen auf Arbeitsspeicher oder sogar
Peripheriespeicher werden hingegen so selten genommen, dass virtuelle
Speicherverwaltung ein gut funktionierendes Verfahren zur Nutzung der
knappen Ressource "Arbeitsspeicher" bietet

Was ist entscheidend für eine effiziente Verwaltung des Seitenspeichers -> die Häufigkeit, mit der benötigten Seiten vom Hintergrundspeicher in den
durch das Betriebssystem? Hauptspeicher eingelagert werden müssen
-> Maß dafür: Seitenfehler-Rate (Page Fault Rate)

Seitenfehler-Rate (Page Fault Rate) = Anzahl der erforderlichen Seiteneinlagerungen pro Zeiteinheit

Was passiert, wenn bei einem Seitenzugriff die erforderliche Seite nicht im -> Prozessor generiert Unterbrechungsanforderung (Page Fault Exception,
Hauptspeicher ist? PF)
-> daraufhin muss Seitentabelle durch Betriebssystem eingelagert werden

(es wird auch genauso vorgegangen, wenn in zweiten Stufe der


Adressberechnung die gewünschte Seitennummer nicht in Seitentabelle
vorliegt)

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 39/63
24.8.2021 01744-PC-Technologie

Auf welchen vier Ebenen wird Schutz gewährleistet? - Trennung der Systemsoftware (bspw. des Betriebssystems, insb. des
Ein-/Ausgabe-Subsystems (BIOS) von den Anwendungsprozessen)
- Trennung der Anwendungsprozesse voneinander (sonst könne fehlerhaftes
Anwendungsprogramm andere, fehlerfreie Programme beeinflussen)
- Datentyp-Überprüfungen (Type Checking) während der Laufzeit (damit soll
gesichert werden, dass nicht versucht wird, Daten-Segmente als Programme
zu interpretieren und auszuführen)
- Überwachung der Segmentgröße (Limit Checking; verhindert, dass Offset
zu einer Adresse außerhalb der Code- oder Daten-Segmente führt)

Was ist das wichtigste Mittel zur Realisierung von Schutzmechanismen? -> die s.g. Schutz- oder Privileg-Ebenen (PL, Privilege Levels)

Zwei-Schutzebenen-Konzept - unterscheidet zwei verschiedene Privileg-Ebenen (Systemmodus und


Benutzermodus)
- dabei darf Auftrag im Benutzermodus in der Regel keine Daten oder
Programme des höher privilegierten Betriebssystemmodus benutzen
- Konzept wird u.a. bei Seitenverwaltung der x86-Prozessoren eingehalten

Welches Schutzebenen-Konzept wird bei der Segmentverwaltung verwendet? - eine vierstufige Hierarchie der Vertrauenswürdigkeit (Hierarchy of Trust)
- es gibt also vier Privileg-Ebenen (PL)
- PL=0 entspricht vertrauenswürdigsten Ebene (Most Trusted Level), PL=3
der am wenigsten vertrauenswürdigen Ebene (Least Trusted Level)
- vier Ebenen ermöglichen differenzierte Unterscheidung zwischen den
verschiedenen Arten von Code und Daten

Abbildung: Beispielsystem mit vier Schutzringen

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 40/63
24.8.2021 01744-PC-Technologie

- BS-Kern: realisiert Hauptaufgaben des Betriebssystems (bspw. Speicher-


und Prozessorverwaltung sowie Ausnahmebehandlung); ist wichtigste
Softwareteil des Systems, der von allen Benutzerprogrammen benötigt wird;
wird als besonders fehlerfrei und zuverlässig vorausgesetzt

- BIOS: ist Teil des Betriebssystemkerns und befindet sich resident im


Rechner; beinhaltet alle standardisierten Grundfunktionen, die für E/A
benötigt werden; macht darüber liegenden Schichten des Betriebssystems von
aktuellen Rechnerhardware unabhängig

- Kommando-Interpreter: bildet Benutzerschnittstelle des Betriebssystems;


Komponente nimmt die von Benutzer eingegebenen Befehle an, interpretiert
sie und übergibt sie zur Ausführung an das Betriebssystem

- Anwendungsprogramme: sind vom Benutzer geschriebene Programme, die


normalerweise keine systemweiten Dienste zur Verfügung stellen

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 41/63
24.8.2021 01744-PC-Technologie

-> es müssen aber nicht immer alle vier Privileg-Ebenen benutzt werden (bei
ungeschütztem System können bspw. alle Segmente PL=0 angehören)

Was garantieren Zugriffsrechte (Access Rights)? -> dass nur unter bestimmten Voraussetzungen auf die im Speicher
abgelegten Informationen zugegriffen werden darf

Dazu wird das folgende Grundprinzip angewendet:


"Jeder Auftrag darf nur auf diejenigen Daten zugreifen, die er wirklich zur
Erfüllung seiner Aufgabe benötigt."

Wie werden Schutzmaßnahmen bei einer Segmentverwaltung realisiert? - es werden dafür Schutz- oder Privileg-Ebenen an verschiedenen Stellen
eingesetzt
- es werden dabei den Daten- als auch den Code-Segmenten eine Privileg-
Ebene zugeordnet, die im Segment-Deskriptor spezifiziert sind

-> jedes Daten-Segment besitzt also eigenes Privileg, aber auch die
Ausführung jedes Prozesses find auf einer bestimmten Privileg-Ebene statt

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 42/63
24.8.2021 01744-PC-Technologie

Schutzmaßnahmen bei Segmentverwaltung: Zugriffsregeln - bei Realisierung von Schutzmechanismen muss zwischen Zugriff auf Daten
und Zugriff auf Programmcode unterschieden werden

Zugriffsregeln:
- Prozess darf nur auf Daten zugreifen, die höchstens genauso
vertrauenswürdig sind wie er selbst (Prozesse mit geringen Privilegien sollen
so keine wichtigen Daten verändern)
- Prozess darf nur Code benutzen der mindestens genauso vertrauenswürdig
ist wie er selbst (stellt also sicher, dass aufgerufene Code wenigstens gleichen
Qualitäts- und Sicherheitsansprüchen genügt wie der aufrufende)

Schutzmaßnahmen bei Segmentverwaltung: Prozess-Privileg-Ebene (Current - jedem gerade ausgeführten Prozess wird diese Privileg-Ebene zugeordnet
Privilege Level, CPL) - CPL ist eine sich dynamisch ändernde (zeitabhängige) Größe, die durch
Privileg-Ebene des gerade ausgeführten Code-Segments bestimmt wird
- mit Wechsel zu anderem Code-Segment kann sich auch CPL ändern
- CPL ist in den beiden niederwertigen Bits des (sichtbaren Teil des) Code-
Segmentregister (CS) des Prozesses abgelegt

Schutzmaßnahmen bei Segmentverwaltung: Deskriptor-Privileg-Ebene - ist im Segment-Deskriptor abgelegt und legt Privileg-Ebene eine
(Descriptor Privilege Level, DPL) bestimmten Segmentes fest
- bei jedem Zugriff auf dieses Segment wir das DPL mit dem CPL des
zugreifenden Prozesses verglichen
- angewandten Zugriffsrechte richten sich nach Typ des Segments (Daten-
Segment, Confirming Code-Segment usw.)

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 43/63
24.8.2021 01744-PC-Technologie

Schutzmaßnahmen bei Segmentverwaltung: Geforderte Privileg-Ebene - wird von selektiertem Segment gefordert
(Requested Privilege Level, RPL) - Prozessor vergleicht bei jedem Zugriff das RPL mit CPL und überprüft
damit die Zugriffsrechte
- RPL kann vom Betriebssytem dynamisch modifiziert werden
- Angabe des RPL im Selektor dominiert das CPL des aktiven Code-
Segments

Interpretation der Zugriffsregeln: Zugriff auf Daten - Prozess mit Privileg-Ebene CPL kann auf alle Daten zugreifen, die sich in
einem Segment befinden, dessen Privileg-Ebene DPL zahlenmäßig
mindestens genauso groß ist
- es muss also gelten: CPL ≤ DPL
- es ist dem Prozess also möglich Daten-Segmente zu verwenden, die
weniger vertrauenswürdig sind, d.h. deren DPL numerisch größer als aktuelle
CPL ist

-> Daten dürfen nur durch Code verändert werden, der mindestens genauso
vertrauenswürdig wie sie selbst ist

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 44/63
24.8.2021 01744-PC-Technologie

Interpretation der Zugriffsregeln: Zugriff auf Code - Prozess C mit Prozess-Privileg-Ebene CPL kann ohne spezielle
Voraussetzungen zunächst nur solchen Code C' benutzen, der dieselbe
Privieg-Ebene DPL wie er selbst besitzt, d.h. es muss im Deskriptor des
Code-Segments DPL = CPL gelten

- Zugriff auf Code mit höheren Privileg (CPL > DPL) ist nur mit Hilfe einer
speziellen Kontrollstruktur (Call Gates, CG) oder durch Prozesswechsel
möglich
- wenn bspw. eine Anwendung C mit CPL=3 über ein CG eine
Betriebssystemroutine C' mit DPL=0 aufruft, so hat Prozess Privileg-Ebene
CPL=0, solange Betriebssystemroutine abgearbeitet wird; danach wechselt er
wieder automatisch auf Privileg-Ebene CPL=3

In welchen Situationen werden vom Prozessor Überprüfungen (Protection - bei Zugriff auf eine virtuelle Adresse, die einen neuen Selektor enthält
Checks) durchgeführt? - bei Zugriff auf ein Segment
- bei Durchführung einer privilegierten Operation

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 45/63
24.8.2021 01744-PC-Technologie

Was muss bei jedem neuen Selektor geprüft werden? Ob das spezifizierte Segment..

- im Speicher ist
- eine für den aktiven Prozess zulässige Privileg-Ebene (DPL) hat
- den richtigen Segmenttyp für die auszuführende Operation hat

Konsistenzüberprüfungen bei Segmentzugriffen - Segmenttyp: Liegt korrekte Segmenttyp vor? (es müssen bspw.
Unterprogrammaufrufe oder Sprünge stets auf Code-Segment zugreifen
- Lese-/Schreib-Recht: beim Lesen von Daten eines Code-Segments muss R-
Bit gesetzt sein; sollen neue Daten in Daten-Segment geschrieben werden,
muss W=1 gelten
- Segmentgröße: bei jedem Segmentzugriff wird geprüft, ob Offset der
virtuellen Adresse innerhalb der durch die Segmentgröße (Limit) gegebenen
Grenzen liegt (d.h. kleiner bzw. bei Expand-Down-Segmenten größer als
Segmentgröße ist)

Überprüfung der Zugriffsrechte bei Ausführung einer privilegierten - bestimmte privilegierte Operationen dürfen nur von Prozessen der Privileg-
Operation Ebene PL=0 (bspw. Betriebssystemprozesse) benutzt werden
- solche Prozesse ändern bspw. Systemregister
- man kann verhindern, dass Systemtabellen durch nicht hinreichend
vertrauenswürdige Anwendungsprozesse verfälscht werden

Schutzmaßnahmen bei Seitenverwaltung - wie bei Segmenten können auch jeder einzelnen Seite bzw. jeder
Seitentabelle Zurgiffsrechte zugeordnet werden

Man kann prüfen:


- ob sich die Seite im Speicher befindet
- ob die Seite ein Privileg besitzt, das dem aktiven Prozess nach den
Zugriffsregeln den Zugriff auf die Seite gestattet
- ob die Seite beschrieben werden darf

Schutzmaßnahmen bei Seitenverwaltung: Wie werden die Schutzmaßnahmen -> in zwei Schritten
durchgeführt?
- im ersten Schritt werden Schutzanforderungen der Segmente überprüft, die
zur Berechnung der linearen Adresse benötigt werden; wird Verletzung der
Regeln festgestellt, so wird unverzüglich eine Exception ausgelöst
- im zweiten Schritt werden Attribute zum Schutz der Seiten betrachtet

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 46/63
24.8.2021 01744-PC-Technologie

Kontrolltransfer-Verfahren (Control Transfer) - Verfahren wird verwendet, wenn auf Code mit einer höheren Privileg-Ebene
zugegriffen werden soll

Conforming Code Segment - beim Zugriff auf höher privilegierten Code kann auf Call Gate verzichtet
werden, wenn im Segment-Deskriptor des aufgerufenen Code-Segments das
Confirming Bit C gesetzt ist

Abbildung: Aufruf eines Conforming Code Segments von verschiedenen


Privileg-Ebenen aus

- zeigt den Ablauf des Kontrolltransfers


- aufgerufene Code wird auf derselben Privileg-Ebene ausgeführt wie der
aufrufende Prozess (CPL)
- durch diesen Mechanismus kann das Conforming Code Segment von allen
Prozessen benutzt werden, die wenigstens auf derselben Privileg-Ebene
arbeiten, und nimmt während seiner Ausführung immer die Privileg-Ebene
des aufrufenden Codes an
- somit erfolgt für den aufrufenden Prozess kein Privileg-Wechsel

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 47/63
24.8.2021 01744-PC-Technologie

Call Gates (CG) - regeln Ausführung von Programmcode, der sich auf höheren Privileg-Ebene
DPL befindet als derjenige des aktuell ausgeführten Prozesses
- es gilt: DPL < CPL
- gehört Code-Segment, in das durch das CG gewechselt werden soll zu
niedrigeren Privileg-Ebene DPL (also DPL > CPL), so wird
Programmunterbrechung generiert

-> im Gegensatz zu Conforming Code Segments findet bei CG ein Wechsel


der Privileg-Ebene des aktuellen Prozesses statt (es wird also CPL := DPL
gesetzt)

Warum ist der kontrollierte Zugriff auf höher privilegierten Code mit Hilfe - einerseits benötigen Anwendungsprozesse Zugriff auf
von Call Gates sinnvoll? Betriebssystemdienste
- andererseits muss Zugriff von Anwendungsprozessen auf das
Betriebssystem kontrolliert werden um Schutz zu gewährleisten

Abbildung: Call-Gate-Deskriptor

- ist ein spezieller, 8 Byte langer Deskriptor, der entweder in globalen (GDT)
oder lokalen Deskriptor-Tabelle (LDT) eingetragen ist
- Access Byte (spezifiziert Zugriffsrechte) unterscheidet einen Call-Gate-
Deskriptor von einem Segment-Deskriptor

Call Gates: Stackverwaltung - für jede Privileg-Ebene (max. vier) innerhalb eines Prozesses gibt es
eigenen Stack, jeweils in einem eigenem Segment untergebracht
- ist erforderlich, da sonst keine vollständige Trennung der verschiedenen
Privileg-Ebenen möglich wäre

Was versteht man unter dem Zustand eines Prozesses? - den gesamten Kontext, in dem er sich bei seiner Unterbrechung befindet

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 48/63
24.8.2021 01744-PC-Technologie

Was gehört zum Kontext eines Prozesses? - Inhalt sämtlicher allgemeiner Register der ALU
- Inhalt des Statusregister und Stand des Befehlszählers
- Wert des Stackpointers
- Inhalt der Segmentregister, des LDT-Registers sowie des CR3-Registers
- sonstige Systemregister-Inhalte

-> es müssen also alle Informationen über den unterbrochenen Prozess


abgespeichert werden, die es zum Zeitpunkt seiner Wiederaufnahme
ermöglichen, den Prozessor in denselben Zustand zu versetzen, wie er zum
Zeitpunkt der Prozessunterbrechung vorlag

Wo wird der Prozesskontext abgespeichert? -> ein einer speziellen Datenstruktur (dem Prozess-Kontroll-Block, Process
Control Block, PCB, Task Control Block)

Was ist der Prozess-Kontroll-Block? - ein spezielles Segment, wird deshalb auch Task State Segment (TSS)
genannt
- TSS eines Prozesses umfasst mind. 26 (32-bit-) Wörter

Woraus besteht der Prozess-Kontroll-Block? Einem statischen Teil, der sich während Prozessausführung nicht ändert;
enthält:
- Selektor für die lokale Deskriptor-Tabelle (LDT) des Prozesses
- Initialisierungswerte SS:ESP der Stackpointer für die Privileg-Ebenen PL=0
bis PL=2

Einen dynamischen Teil, der alle Informationen enthält, die sich während der
Laufzeit ändern können; dazu gehören:
- sämtliche Inhalte der allgemeinen Prozessorregister
- Selektoren in den sechs Segmentregistern CS, SS, DS, ES, FS, GS
- Inhalt des Statusregisters EFLAGS
- Befehlszeiger EIP (Instruction Pointer)
- Back Link Selector zum vorher ausgeführten Prozess
- Systemregister CR3 mit Basisadresse des Seitentabellen-Verzeichnisses
(Page Directory Base Register, PDBR)

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 49/63
24.8.2021 01744-PC-Technologie

Abbildung: Aufbau des Prozess-Kontroll-Blocks

- I/O-Map Base Address gibt Offset einer Tabelle (bezogen auf Basisadresse
des TSS) an, in der für jedes Register der Schnittstellen, die im
Ein-/Ausgabe-Adressraum (I/O Address Space) untergebracht sind,
angegeben werden kann, ob der betreffende Prozess auf dieses Register
zugreifen darf oder nicht

Wozu dient der Back Link Selector? - dient dazu, das Abarbeiten von so genannten verschachtelten Prozessen
(Nested Tasks) zu ermöglichen
- Fall liegt dann vor, wenn nach Beendigung eines Prozesses wieder in den
Prozess zurückgesprungen werden soll, der den Prozess aufgerufen hatte
- Back Link Selector verweist auf dann auf PCB des TSS dieses Prozesses
- verschachtelte Prozesse werden daran erkannt, dass im Statusregister
EFLAGS (Extended Flag Register) das NT-Bit (Nested Task) gesetzt ist

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 50/63
24.8.2021 01744-PC-Technologie

Abbildung: TSS-Deskriptor

- TSS-Deskriptor wird zur Beschreibung eines Prozess-Kontroll-Block (Task


State Segment) benutzt
- enthält im Access Byte das Present Bit P und DPL-Bits, die seine Prozess-
Privileg-Ebene angeben sowie eine spezifische Kennung "010B1" zu seiner
Identifikation (B-Bit ist gesetzt, wenn Prozess gerade bearbeitet wird (busy),
also aktiv oder blockiert ist, andernfalls gilt B=0)
- TSS-Deskriptor muss ständig zugreifbar sein, weshalb er in GDT
abgespeichert sein muss

Wie erfolgt der Zugriff auf ein TSS? - über ein spezielles Register (Task Register, TR), das den entsprechenden
Selektor für die GDT enthält
- im Task Register werden Größe des Prozess-Kontroll-Blocks und seine
Basisadresse aus dem selektierten TSS-Deskriptor abgespeichert (ist für das
Programm nicht sichtbar)
- Task Register verweist stets auf den gerade von der CPU ausgeführten
Prozess

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 51/63
24.8.2021 01744-PC-Technologie

Abbildung: Adressierung von Prozessen

-> zeigt Zusammenhang zwischen Task Register, TSS-Deskriptor und


Prozess-Kontroll-Block TSS

Zugriffsschutz beim Prozesswechsel - jeder TSS-Deskriptor muss in GDT residieren, so dass von jedem Prozess
aus darauf zugegriffen werden kann
- um unkontrollierte Prozessbenutzung zu verhindern ist häufig die
Deskriptor-Privileg-Ebene DPL innerhalb jedes TSS-Deskriptors auf "0"
gesetzt
- dadurch kann Prozesswechsel nur durch Prozess durchgeführt werden, der
ebenfalls das Privileg "0" besitzt

Alternativ:
- kontrollierter Zugriff durch spezielle Task Gates

Prozessverwaltung im 64-bit-Modus - Prozessverwaltung und Prozesswechsel werden nicht von Hardware


unterstützt und müssen vollständig durch die Software ausgeführt werden
- Software muss für jeden Prozess einen Prozess-Kontroll-Block (TSS) im
Speicher anlegen und verwalten
- im TSS liegen insb. Stapelzeiger für Privileg-Ebenen 0-2, bis zu sieben 64-
bit-Zeiger auf Stackbereiche bestimmter Interruptquellen sowie i/O Map
Base Address

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 52/63
24.8.2021 01744-PC-Technologie

Kommunikation beim Segmentierungsverfahren: Data Sharing mit Hilfe der - einfachste Möglichkeit mehreren Prozessen den Zugriff auf gemeinsame
GDT Segmente (Shared Segements) zu ermöglichen ist es, die entsprechenden
Segment-Deskriptoren in einem globalen, allen Prozessen zugänglichen
Adressbereich abzuspeichern
- dazu müssen die entsprechenden Deskriptoren in GDT abgelegt werden
- Vorteil: es können ohne besonderen Aufwand Änderungen bei den
Segmenten (bspw. Modifikation der Segmentgröße) vorgenommen werden,
da es nur einen Deskriptor pro Shared Segment gibt

Kommunikation beim Segmentierungsverfahren: Data Sharing mit einer - falls mehrere Prozesse fast nur gemeinsame Segmente (Shared Segments)
gemeinsamen LDT besitzen, ist es sinnvoll, ihnen dieselbe LDT zuzuordnen
- kann dadurch geschehen, indem man LDT-Selektor des gemeinsamen LDT-
Deskriptors in den Prozess-Kontroll-Block (TSS) aller beteiligten Prozesse
lädt
- Nachteil: auf sämtliche Segmente können alle beteiligten Prozesse
zugreifen; es ist nicht möglich, dass in differenzierter Weise nur auf einzelne
Segmente gemeinsam zugegriffen werden kann

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 53/63
24.8.2021 01744-PC-Technologie

Kommunikation beim Segmentierungsverfahren: Data Sharing durch


Aliasing

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 54/63
24.8.2021 01744-PC-Technologie

- Prozesse A und B benutzen gemeinsames Daten-Segment, indem in der


LDT jedes Prozesses ein Segment-Deskriptor vorhanden ist, der auf das
gemeinsame Daten-Segment verweist
- für dieses Segment gibt es also mehrere Versionen des zugehörigen
Segment-Deskriptors in den LDTs verschiedener Prozesse

Vorteil:
-> Flexibilität
- ein einzelnes Segment kann von beliebig vielen Prozessen gemeinsam
benutzt werden, indem jeder Prozess für dieses Segment seinen eigenen
Deskriptor in seiner LDT hat
- verschiedenen Versionen der Segment-Deskriptoren müssen nicht identisch
sein
- es ist möglich, verschiedenen Prozessen unterschiedliche Zugriffsrechte
einzuräumen (Shared Segment kann dann bspw. durch Prozess A nur gelesen,
von B aber auch geändert werden)

Nachteil:
- Prozessor kann nicht selbst für Konsistenz der verschiedenen Deskriptor-
Versionen sorgen

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 55/63
24.8.2021 01744-PC-Technologie

- ändern sich Eigenschaften des Segments (bspw. Zugriffsrechte oder


Basisadresse bei Einlagerung in Hauptspeicher), so müssen sämtliche Alias-
Deskriptoren entsprechend modifiziert werden (muss durch Betriebssystem
übernommen werden)
- Betriebssystem muss sich merken, zu welchen Deskriptoren es Alias-
Versionen gibt und in welchen LDTs diese abgespeichert sind

Kommunikation beim Seitenwechselverfahren: Data Sharing über ein - für zwei oder mehrere Prozesse ist es möglich ein gemeinsames
gemeinsames Seitentabellen-Verzeichnis Seitentabellen-Verzeichnis (Page Directory) zu verwalten
- in diesem Fall kann auf alle Seitentabellen und sämtliche Seiten gemeinsam
zugegriffen werden

Kommunikation beim Seitenwechselverfahren: Data Sharing über eine - mind. zwei Prozesse besitzen eine gemeinsame Seitentabelle (es gibt also in
gemeinsame Seitentabelle beiden Seitentabellen-Verzeichnissen einen Eintrag, der auf dieselbe
Seitentabelle verweist)
- es existieren somit zwei Alias-Versionen der Seitentabelle in zwei
verschiedenen Seitentabellen-Verzeichnissen (auch hier könnn die Einträge in
den Verzeichnissen durchaus unterschiedliche Zugriffsrechte zulassen)

Kommunikation beim Seitenwechselverfahren: Data Sharing über eine - in diesem Fall gibt es mehrere Alias-Versionen für einen Eintrag in einer
gemeinsame Seite Seitentabelle
- Verwaltung der Alias-Tabelleneinträge muss durch das Betriebssystem
unterstützt werden (ist bei Seitenverwaltung u.U. sehr viel kritischer als bei
Segmentverwaltung; insb. die 4 kB großen Seiten werden sehr viel häufiger
aus dem Hauptspeicher aus- und eingelagert als die im Mittel erheblich
größeren Segmente)
- bei jeder Einlagerung ändert sich normalerweise die Seiten-Basisadresse, so
dass relativ häufig sämtliche Alias-Tabelleneinträge modifiziert werden
müssen
- daher ist es oft sinnvoller eine Seitentabelle, deren Attribute sich nicht so
schnell ändern, gemeinsam zu nutzen als einzelne Seiten

Welche Exceptions kann man unterscheiden? - Interrupts, die durch externe Ereignise über INTR- oder NMI-Leitung
generiert werden
- durch INT-Befehl erzeugte Software-Interrupts
- Traps, die auftreten, wenn beim Abarbeiten eines Befehls ein Fehler auftritt

-> Behandlung von Interrupts und Exceptions ist spezielle Form eines
Kontrolltransfers

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 56/63
24.8.2021 01744-PC-Technologie

Interrupt-Deskriptor-Tabelle - jeder Interrupt bzw. Trap erfordert spezielle Behandlung, weshalb jeder
Ausnahmesituation eine Vektornummer zwischen 0-255 zugeordnet wird
(Exception/Interrupt Vector Number)
- Verbindung zwischen dieser Nummer und der ihr zugeordneten Ausnahme-
Behandlungsroutine (Exception/Interrupt Handler) liefert wiederum spezielle,
im System nur einmal vorhandene Tabelle (Interrupt-Deskriptor-Tabelle,
Interrupt Descriptor Table, IDT)
- IDT besteht aus Liste mit Deskriptoren, die auf die jeweils erforderliche
Behandlungsroute verweisen
- Zugriff auf IDT erfolgt durch besonderes Systemregister (IDT-Register,
IDTR)
- IDTR enthält Basisadresse und Größe des IDT und wird vom
Betriebssystem mit Hilfe der privilegierten Instruktion LIDT geladen (Load
IDT)

Abbildung: Interrupt-Deskriptor-Tabelle und IDT-Register

- Zugriff auf IDT erfolgt nur, wenn Ausnahmesituation aufgetreten ist


- jeder Eintrag in IDT ist ein 8 Byte langer Deskriptor, der einen
kontrollierten Übergang (Gate) zur Ausnahme-Behandlungsroutine darstellt

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 57/63
24.8.2021 01744-PC-Technologie

Welche Arten von Gates kann man je nach Art der Ausnahmebehandlung - Task Gates
unterscheiden? - Interrupt Gates
- Trap Gates

-> jedes Gate in IDT besitzt eigene Deskriptor-Privileg-Ebene DPL, die


festlegt, welches Privileg erforderlich ist, um die entsprechende
Behandlungsroutine aufzurufen
-> wie bei Call Gates muss Privileg-Ebene des aktuell ausgeführten Prozesses
CPL zahlenmäßig kleiner oder gleich dieser DPL sein

Prozessorientierte Ausnahmebehandlung - Ausnahmebehandlung kann durch eigenen Prozess durchgeführt werden


(Task-based Handler)
- in diesem Fall ist der durch die Exception-Nummer (Exception Vector)
spezifizierte Deskriptor in der IDT ein Task Gate
- Task Gate verweist auf Prozess-Kontroll-Block TSS, der einen neuen
Prozess (Exception Task) initialisiert (zur Unterbrechungsbehandlung)
- bei dieser Form der Ausnahmebehandlung wird automatisch gesamte,
aktuelle Kontext des unterbrochenen Prozesses in seinen TSS gesichert und
Unterbrechungsprogramm läuft in eigenen, neuen Kontext ab (unterbrochene
Prozess und Ausnahmebehandlung sind logisch vollständig voneinander
getrennt)
- um nach Beendigung eines unterbrochenen Prozesses wieder zu ihm
zurückkehren zu können, ist jeder Prozess zur Behandlung einer
Ausnahmesituation ein verschachtelter Prozess (Nested Task), d.h. im
Prozess-Kontroll-Block der Unterbrechungsroutine ist (als Back Link
Selector) der TSS-Selektor des unterbrochenen Prozesses eingetragen

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 58/63
24.8.2021 01744-PC-Technologie

Prozedurorientierte Ausnahmebehandlung - zeigt Exception-Vektor in IDT auf Trap Gate oder Interrupt Gate erfolgt
Ausnahmebehandlung innerhalb des unterbrochenen Prozesses (handelt sich
daher um prozedurorientierte Ausnahmebehandlung, in der der Kontext des
unterbrochenen Prozesses erhalten bleibt)

Trap/Interrupt Gate Descriptor:

Was spezifiziert ein Interrupt/Trap Gate? - eine Prozedur, d.h. es verweist mit einem Selektor und einem Offset auf ein
Code-Segment und besitzt fast dieselbe Struktur wie ein Call Gate
- Prozessor führt einen solchen Prozeduraufruf auch genauso wie einen Call-
Gate-Aufruf durch

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 59/63
24.8.2021 01744-PC-Technologie

Vergleich zwischen prozess- und prozedurorientierter Ausnahmebehandlung - zur Behandlung von internen Unterbrechungen (Traps) ist oft
prozedurorientierte Ausnahmeroutine sinnvoll, weil dort Interrupt Handler
Zugriff auf sämtliche Daten des unterbrochenen Prozesses besitzt (Bsp.: Page
Fault Handler der auf Seitentabelle des unterbrochenen Prozesses zugreifen
muss)

- externe Unterbrechungen (Interrupts) haben normalerweise keinen Bezug


zum unterbrochenen Prozess
- es ist deshalb sinnvoll sie durch einen eigenen Prozess zu behandeln (=
prozessorientierte Ausnahmeroutine)
- Prozesswechsel dauert aber länger als Prozeduraufruf

Trap-Behandlung: Trap (im engeren Sinne) -> Prozess wird über Fehler informiert, kann aber fortgesetzt werden

- Traps werden nach der Ausführung eines Befehls gemeldet


- Rücksprungadresse für Behandlungsroutine zeigt auf den Befehl, der dem
"fehlerhaften" Befehl folgt
- Beispiele: Überlauf des Zahlenbereichs, Einzelschritt-Unterbrechung

Trap-Behandlung: Fault -> Fehler kann behoben und danach die abgebrochene Aktion wiederholt
werden

- bei Fault speichert der Prozessor den Zustand vor der Abarbeitung des
fehlerhaften Befehls und kann so nach Behebung des Fehlers den Befehl mit
unverändertem Prozessorzustand wiederholen
- Vorgehen ist für viele Fehler sinnvoll
- Bsp.: wird festgestellt, dass sich benötigte Seite nicht im Hauptspeicher
befindet, kann sie durch Page Fault Handler eingelagert werden und danach
kann der unterbrochene Prozess mit dem jetzt erfolgreichen Seitenzugriff
fortfahren; Division durch 0

Trap-Behandlung: Abort -> Prozess muss abgebrochen werden

- ist bei Fehlern notwendig, die nicht eindeutig einem bestimmten Befehl
zugeordnet werden können und daher keine Wiederholung eines Befehls oder
erneuten Start des Prozesses ermöglichen
- Bsp.: Hardwarefehler, falsche Werte in Systemtabellen

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 60/63
24.8.2021 01744-PC-Technologie

Ausnahmesituationen der Speicher- und Prozessverwaltung (von MMU - ungültiges TSS: wird ausgeführt, wenn bei Prozesswechsel der neue
erzeugte Ausnahmesituationen) Prozess-Kontroll-Block (TSS) ungültig ist (Gründe: Segmentgröße zu klein,
fehlerhafter Inhalt des Systemregisters)

- Segment nicht im Hauptspeicher: wird generiert, wenn beim Laden eines


neuen Segments oder beim Zugriff auf ein Gate das Present Bit P nicht
gesetzt ist; hier wird Fehlercode, der den Selektor des Deskriptors enthält, auf
Stack gelegt; zur Behandlung wird fehlendes Segment in Hauptspeicher
eingelagert, anschleißend kann der unterbrochene Prozess fortgesetzt werden

- Stack-Segment-Fehler: wird generiert, wenn beim Stackzugriff die im


Deskriptor angegebene Segmentgröße überschritten wird oder Stack-Segment
nicht im Arbeitsspeicher liegt; kann behandelt werden, indem Segmentgröße
erhöht bzw. Segment in Arbeitsspeicher eingelagert wird

- Allgemeiner Fehler im Schutzkonzept: alle Fehler, die durch


implementierten Schutzmechanismus erkannt werden und nicht durch andere
Routine behandelt werden kann, generieren diese Exception; Ursachen: bspw.
Verletzen der Privileg-Regeln, Schreibzugriff auf Segment das nur gelesen
werden darf; diese Fehler können nicht behoben werden so dass Prozess
abgebrochen werden muss

- Seitenfehler: Prozessor erzeugt automatisch Unterbrechung und speichert


lineare Adresse, bei der ein Fehler aufgetreten ist, im Systemregister CR2 ab

Abbildung: Gesamtübersicht der Deskriptor-Tabellen

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 61/63
24.8.2021 01744-PC-Technologie

1. Zugriff auf ein Code–, Stack– oder Daten–Segment über einen Segment–
Deskriptor, der in der GDT oder LDT liegen kann. Der Selektor wird in
einem der Segmentregister CS, SS, DS, ES, FS, GS abgelegt.

2. ”Indirekter” Zugriff auf ein Code–Segment über ein Call Gate. Dieses
kann in der LDT oder GDT liegen und verweist auf den Segment–Deskriptor
des Code–Segments, der ebenfalls in einer der beiden Tabellen liegen kann.
(Der Zugriff über die GDT ist nicht gezeichnet.)

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 62/63
24.8.2021 01744-PC-Technologie

3. Adressierung des aktiven Prozesses: Das Task Register selektiert einen


TSS–Deskriptor, der das aktuelle Task State Segment (TSS) beschreibt.
Im TSS sind die Selektoren für Code–, Stack– und Daten–Segmente des
Prozesses sowie der Stacks der verschiedenen Privileg–Ebenen angegeben.
Außerdem enthält es einen Selektor auf den LDT–Deskriptor in der GDT, der
die lokale Deskriptor–Tabelle des Prozesses beschreibt.

4. Beim Auftreten einer Ausnahmesituation wird ein entsprechendes Gate in


der IDT durch die Interrupt–Vektornummer (IVN) selektiert.

5. Tritt ein Trap auf, so wird vom zugehörigen Trap Gate ein Segment–
Deskriptor in der LDT oder GDT (nicht gezeichnet) selektiert, der die
Trap–Behandlungsroutine (Code–Segment) beschreibt.

6. Die Behandlung einer Interruptanforderung wird wie eine Trap–


Anforderung durchgeführt.

7. Die Ausnahmesituation kann auch durch einen eigenständigen Prozess


behandelt werden. In diesem Fall zeigt die IVN auf ein Task Gate in der IDT.
Dieses Gate verweist wiederum auf einen TSS–Deskriptor in der GDT. Das
beschriebene TSS enthält die Selektoren für alle benötigten Code–, Stack–
und Daten–Segmente.

https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 63/63

Das könnte Ihnen auch gefallen