Beruflich Dokumente
Kultur Dokumente
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
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
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)
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)
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
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
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)
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
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
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)
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
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
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)
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
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
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)
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)
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
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
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
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
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
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
- 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
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
- 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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
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
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
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
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
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
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
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
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
- 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
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
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
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
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
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
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)
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
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)
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)
Trap-Behandlung: Trap (im engeren Sinne) -> Prozess wird über Fehler informiert, kann aber fortgesetzt werden
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
- 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)
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
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.
https://www.repetico.de/export?groupKey=1763231&e=print&withoutPictures=false&printOption=flexible&cellHeight=120&aboutEachOther=false&avoidPageBreaks=true&fontSize=&enforceFontSize=false 63/63