Webcam Diggs Cam


Speicherschutz und Multitasking

Kapitel 3 - Speicherschutz und Multitasking

Inhalt
  • Segmente und Speicherschutz
  • Real- und Protected Modes
  • Privilegebenen und Deskriptoren
  • Wie werden die Adressen gebildet?
  • Wie arbeitet Paging)
Um unberechtigte Zugriffe, Datenaufrufe oder Systemprozedurecalls zu vermeiden und Task-Isolation zu gewährleisten, ist ein ausgeklügeltes Speicherschutzsystem notwendig.

Segmente zum schützen von Speicherbereichen

Segmente sind logische Speicherbereiche variabler Länge (Pages sind normalerweise gleich groß und ergeben zusammengesetzt ein Segment). In einem Segment ist wiederum eine Aufteilung in Code-, Daten- und Speichersegment zu finden. Jedes Segment definiert ein Objekt, welches eindeutig über einen Deskriptor mit Basisadresse, Zugriffsrechten und Limit beschieben wird. Auf Basis dieser Segmente arbeitet die komplette Speicherverwaltung eines Rechners-

Wie wird auf Segmente zugegriffen?

Segmente werden über eine Deskriptortabelle indiziert. Die Tabellen enthalten Pointer auf die Speicherbereiche der jeweiligen Segmente.

Was ist das besondere am segmentierten Adreßraum?

Adressen auf Basis von Segmenten sind im unterschied zu linearen Adressen zweidimensional. Sie bestehen aus Segment und Offset. Berechnet werden sie durch einfache Addition von Segment und Offset. Vor der Addition ist das Segment um 4 Stellen nach links zu verschieben.

0002 : 000F berechnet sich also aus 0020 + 000F = 0001F

Was sind die Nachteile des Realmodes?

  • Begrenzung eines Segments auf maximal 64 KB, da Offsetadresse nur 16 Bit groß ist
  • Es nur das erste MByte durch das Betriebssystem adressierbar
  • kein Schutz des Speichers vor anderen Programmen
  • Einträge aus der Interruptvektor-Tabelle sind leicht veränderbar
  • nur ein Programm kann ausgeführt werden

Was hat Multitasking mit Protected Mode zu tun?

Multitasking kann nur durch Protected Mode arbeiten. Er ist sozusagen Grundlage für alle multitaskingfähigen Betriebssysteme. nsbesondere geht es um
  • gegenseitigen Schutz der laufenden Tasks
  • Taskwechselunterstützung durch das Betriebssystem
  • Privilegierungsmechanismen
  • Betriebssystemfunktionen zur Verwaltung von virtuellen Speicher
  • Getrennte Stacks für Parameterübergabe
  • Lösung des "Trojanischen Pferd" Problems

Was sind Privilegebenen?

Im Protected Mode werden Anwendungen und Betriebssystem strikt getrennt. Es gibt vier Privilegstufen (null bis drei), welche über die Ausführung verschiedener Maschinensprachebefehle entscheiden. Befehle der Ebene Null sind z.B. das Laden der globalen Deskriptorentabelle oder des Maschinenstatuswortes.

Privilegebenen

Aus welchen zwei Teilen besteht eine Virtuelle Adresse?

Eine virtuelle Adresse beinhaltet den Segmentselektor, welcher auf einen Eintrag in der Deskriptortabelle zeigt. Das Segment-Offset zeigt auf die dazugehörige Adresse in dem selektierten Segment.

Privilegebenen

Aus welchen drei Teilen setzt sich ein Segmentselektor zusammen?

Aus dem Index, der den Eintrag in der Deskriptortabelle referenziert, dem Table Indicator, welcher über globalem oder lokalem Adressraum entscheidet und den Privelege Level.

TI - Table Indicator
0 = GDT (Global Deskriptor Table für den globalen Adreßraum) 1 = LDT (Local Deskriptor Table für den lokalen Adreßraum)

RPL - Requestor's Privilege Level

Privilegstufe des Segments, auf welches der Selektor verweist

Was ist ein Deskriptor?

Deskriptoren sind Abbildungen zwischen der virtuellen bzw. logischen Adresse (Segmentselektor:Offset) und der linearen Adresse (Basisadresse und Offset). Aus der linearen Adresse wird dann die physikalische Adresse berechnet. (bei i286 war die lineare Adresse noch gleich der physikalischen Adresse, da es noch keine Paging-Einheit gab)

Was steht alles in so einem Eintrag in der Deskriptortabelle?

Die "normalen" Deskriptoren, welche einen normalen Adressraum (Daten-, Code- oder Stacksegment) beschreiben, enthalten
  • die Basisadresse des Segmentes im Speicher
  • die Zugriffsrechte
  • die Länge des Segmentes
Eine andere Klasse von Deskriptoren sind System-Segment-Deskriptoren und zur Ablaufsteuerung notwendige Deskriptoren. Erstere definieren Einsprungpunkte in spezielle System-Unterroutinen oder Gates. Letztere sind Deskriptoren für Task-State-Segmente oder Local-Deskriptor-Tables.

Aktiv sind aber immer nur eine globale, eine lokale Interrupt-Beschreibertabelle und eine Interrupt-Beschreibertabelle.

Was ist ein Gate?

Gates sind spezielle Eintritts-Deskriptoren in Segmente höherer Privilegstufe. (Interrupt- oder Trap-Gate-Deskriptoren)

Worin unterscheiden sich GDT und LDT?

Die Global Descriptor Table einhält Segmente des globalen Adressraums, welcher für alle Tasks zur Verfügung steht. Dagegen sind mit Local Descriptor Table allokierte Segmente nur von den Host-Tasks selbst adressierbar. (privater Adressraum) Lokale Deskriptortabellen sind Grundlage für die Task-Isolation und daher extrem wichtig für Sicherheit und Segmentschutz.

Beschreiben Sie den Aufbau einer Globalen Deskriptortabelle

......
Globale C/D2 Globale Code-/Daten-Deskriptoren
Globale C/D1 Globale Code-/Daten-Deskriptoren
......
System D2Gates bzw. TSS-Deskriptoren
System D1Gates bzw. TSS-Deskriptoren
......
......
LDT 2Lokale Deskriptoren für individuellen Task
LDT 1Lokale Deskriptoren für individuellen Task
......
......
IDT 2Interrupt/Exeption Gates bzw. Deskriptoren
IDT 1Interrupt/Exeption Gates bzw. Deskriptoren
GTD_aliasermöglicht dynamischen Zugriff auf die GDT
0-SelektorZugriff auf 0-Selektor führt zu Exeption

Was unterscheidet Real-Mode und Protected-Mode?

Im Real-Mode gibt es keine Deskriptoren und somit ist auch kein Segmentschutz möglich. Die Basisadresse berechnet sich einfach aus dem Segment-Register, welches maximal 1 MByte adressieren kann, da es nur 20 Bit breit ist. Im Protected-Mode werden die Basisadressen mittels Deskriptoren bestimmt.

Auf Grund dieser Unterschiede sind folgende Merkmale für den Protected-Mode signifikant:
  • Virtuelle Speicherverwaltung
  • Speicherschutzmechanismen durch Segmentation (über Deskriptoren)
  • Paging möglich
  • echtes Multitasking möglich
  • I/O-Privilegierung und privilegierte Befehle

Was ist Paging und wie funktioniert es?

Paging wird ab i386 vom Prozessor unterstützt und ist nichts weiter als eine Einteilung des Speichers in gleich große Seiten. Vorteil des virtuellen Speichers, welcher durch Mapping oder Paging erst möglich ist, sind für Anwendungen theoretisch unendlich großen Arbeitsspeicher. Grund dafür ist, dass der Tertiärspeicher als Zwischenspeicher für schlafende oder temporär nicht notwendige Seiten ausgenutzt wird. Es gibt ausgeklügelte Seitenerstetzungsalgorithmen, welche das Austauschen von Seiten übernehmen. Ein weiteres Problem was beim Paging gelöst werden muss, ist die eventuell entstehende Inkonsistenz. D ieses Problem wird wie bekanntermaßen üblich durch Dirty-Bits in den Pages gelöst.

Verwirrend ist anfangs der Zusammenhang von Segmentierung und Paging. Letztendlich laufen beide Technologien gleichzeitig auf einem modernen System und ergänzen sich gegenseitig. Paging ist hinter den Segmentierungsvorgang geschalten, um Transparenz zu gewährleisten. Die durch die Segmentierung berechnete bzw. übergebene lineare Adresse entspricht ohne Paging der physikalischen. Falls Paging aktiv ist, muss noch etwas mehr getan werden.


Privilegebenen

Die Umsetzung von Linearer in Physikalischer Adresse hängt vom verwendeten Paging ab. Normalerweise wird über die ersten Bits die Page-Table referenziert und über die folgenden der Pagetable-Eintrag, aus dem die Basisadresse geholt wird. Der Offset wird normalerweise beibehalten.

Beschreiben Sie was bei einem Page-Fault intern alles abläuft?

  1. Während Abarbeitung einer Befehlssequenz erfolgen mehrere Seitenzugriffe
  2. Es erfolgt ein Zugriff auf eine Seite.
  3. Prozessor prüft die Seite (ist sie im Speicher?).
  4. Seite gibt Page Not Present State zurück (d.h. Seite nicht im Speicher)
  5. CPU löst Page Fault Exception aus (Siehe System-Aufruf-Deskriptoren)
  6. Betriebssystem gibt in Auftrag die Seite von Platte zu holen
  7. Prozessor aktiviert Festplattenhardware und positioniert Leseköpfe
  8. Seite wird über DMA-Transfer von Disk-To-free Memory übertragen
  9. Betriebssystem aktualisiert Pagetable einschließlich des TLB (flush TLB)
  10. Betriebssystem startet den unterbrochenen Befehl neu
Privilegebenen

Nennen Sie Vorteile und Nachteile des Pagings gegenüber Segmentation-Only!

  • Performanceerhöhung eines Multitasking-Betriebssystems
  • Verwaltung der Swap-Datei wird durch die Verwendung konstanter Speicherblöcke einfacher
  • nur die 4-KByte werden eingelagert, die tatsächlich benötigt werden und nicht das gesamte Segment
Nachteile:
  • Ausführung verzögert sich, weil die Adresse erst dekodiert werden muß
  • bei Zugriff auf eine Seite/Page evtl. erst Einlagerung dieser vom Sekundärspeicher notwendig (Present-Bit)

Wie kann man die Adressdekodierung beim Paging umgehen?

Durch Translation Lookaside Buffer. Ein TLB ist ein assoziativer Vierwege-Cache, welcher die 32 Page-Table-Einträge aufnimmt, auf die der Prozessor zuletzt zugegriffen hat (LRU-Strategie). Ein TLB Eintrag besteht aus drei logischen Blöcken:
  • Datenblock mit Page-Attributen und physikalische Basisadresse einer Page
  • Tagblock enthält die oberen 17 Bit einer linearen Adresse und Schutz-Bits
  • LRU-Block (Least Recently Used) zeigt letzten Zugriff an

Page- und Segmentschutz

Zuerst wirkt der Segmentschutz und danach Pageschutz. Pageschutz ist nur 2-stufig. Die inneren drei Privilegebenen sind beim Paging als Supervisor-Code geschützt. Die äußere Ebene ist User-Code. Ein Zugriffsversuch einer User-Page auf eine Supervisor-Page löst eine Exception aus.

Was unterscheidet kooperatives und preemtives Multitasking?

Beim kooperativen Multitasking entscheiden die Tasks selbst über die Umschaltung der Prozessorleistung. (Naives und Gutgläubiges Verfahren, daß an die Vernunft aller Tasks und somit aller Programmierer glaubt : ) Preemptives Multitasking ist echtes Multitasking. Ein externer Timer steuert die Umschaltung der Tasks. Die Tasks können somit keinen Einfluss auf die Betriebsmittelumschaltung nehmen.
Printansicht Inhalt Anfang zurück vor
Kapitel 1Einleitung
Befehlsschleife, Risc und Cisc...
Kapitel 2Interrupts
Interrupts, Polling, DMA...
Kapitel 3Speicherschutz
Segmentation, Paging, Mapping, Multitasking...
Kapitel 4Caches
Lokalität, Cache-Arten, Schreibstrategien...
Kapitel 5Risc
Risc-Architektur, Load/Store, Registerfenster...
Kapitel 6Pipelining
Prinzip, Datenkonflikte, Forwarding, Delayed Load
Kapitel 7Branch Prediction
Statische / Dynamische Brach-Prediction...
Kapitel 8Superskalarität
Out-Of-Order Execution, Scoreboard und Tomasulo, VLIW...
Kapitel 9Parallelrechner
SMP,Vektorrechner, Cache-Kohärenz
PDF download:
Kleine ÜbersichtRISC - CISC
KomplettKomplett (230 KByte)
MerkblattAdressierungsarten
MerkblattSatSim Erklärungen
Quellen:
Andrew S. Tanenbaum
Computerarchitektur
Andrew S. Tanenbaum
Moderne Betriebssysteme
Petterson
Computer Architectur & Design
Christian Märtin
Rechnerarchitekturen
Rehm
Skript und Vorlesung
Word Wide Web
Verschiedenste Seiten
Links:
Real / Protected Mode
www.goblack.de

login

last change 06.04.2008 16:28:23  © 2002 - 2005 Holger Kreissl