29.08.2013 Aufrufe

4.Vorlesung Betriebssysteme Hochschule Mannheim

4.Vorlesung Betriebssysteme Hochschule Mannheim

4.Vorlesung Betriebssysteme Hochschule Mannheim

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

<strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong><br />

<strong>Hochschule</strong> <strong>Mannheim</strong><br />

Christian Baun<br />

Karlsruher Institut für Technologie<br />

Steinbuch Centre for Computing<br />

cray@unix-ag.uni-kl.de<br />

15.4.2011<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 1/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Wiederholung vom letzten Mal<br />

Von-Neumann-Architektur und Von-Neumann-Zyklus<br />

Hauptprozessor (CPU)<br />

Busse<br />

Speicher (Register, Cache, Hauptspeicher, Festplatten)<br />

Speicherpyramide<br />

Arbeitsweise der Speicherhierarchie<br />

Cache-Schreibstrategien (Write-Back und Write-Through)<br />

Lokalitätsausnutzung (zeitliche und räumliche Lokalität)<br />

Cache-Anfragen (Cache-Hit und Cache-Miss)<br />

Cache-Datenverwaltung (Ersetzungsstrategien)<br />

Logischer Aufbau von Festplatten (Spuren, Sektoren, Zylinder, Cluster)<br />

Solid State Drives (Flash-Speicher)<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 2/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Heute<br />

Redundant Array of Independent Disks (RAID)<br />

Daten von Ein- und Ausgabegeräten lesen<br />

Zeichen-/Blockorientierte Geräte<br />

Adressraum<br />

Speicheradressierung und Speicherverwaltung<br />

Speicherpartitionierung<br />

Statische Partitionierung<br />

Dynamische Partitionierung<br />

Buddy-Verfahren<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 3/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Zugriffszeiten bei Festplatten<br />

In den letzten 40 Jahren ist die Geschwindigkeit von Prozessoren, Cache<br />

und Hauptspeicher deutlich schneller gewachsen als die<br />

Zugriffsgeschwindigkeit der Festplatten:<br />

Festplatten<br />

1973: IBM 3340, 30 MB Kapazität, 30 ms Zugriffszeit<br />

1989: Maxtor LXTl00S, 96 MB Kapazität, 29 ms Zugriffszeit<br />

1998: IBM DHEA-36481, 6 GB Kapazität, 16 ms Zugriffszeit<br />

2006: Maxtor STM320820A, 320 GB Kapazität, 14 ms Zugriffszeit<br />

2011: Western Digital WD30EZRSDTL, 3 TB Kapazität, 8 ms Zugriffszeit<br />

Prozessoren<br />

1971: Intel 4004, 740 kHz Taktfrequenz<br />

2007: AMD Opteron Santa Rosa F3, 2,8 GHz Taktfrequenz 2010: Core i7<br />

980X Extreme (6 Cores), 3,33 Ghz Taktfrequenz<br />

Der Abstand vergrößert sich in Zukunft weiter<br />

Kann man die Zugriffszeit und Datensicherheit bei Festplatten erhöhen?<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 4/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Redundant Array of independent Disks (RAID)<br />

Die Geschwindigkeit der Festplatten lässt sich nicht beliebig verbessern<br />

Festplatten bestehen aus beweglichen Teilen<br />

Physikalische und materielle Grenzen müssen akzeptiert werden<br />

Eine Möglichkeit, die gegebenen Beschränkungen im Hinblick auf<br />

Geschwindigkeit, Kapazität und Datensicherheit zu umgehen, ist das<br />

gleichzeitige Verwenden mehrerer Komponenten<br />

Ein RAID-System besteht aus mehreren Festplatten<br />

Diese werden vom Benutzer und den Prozessen als eine einzige große<br />

Festplatte wahrgenommen<br />

Die Daten werden über die Festplatten eines RAID-Systems verteilt<br />

Wie die Daten verteilt werden, wird durch das RAID-Level spezifiziert<br />

Die gebräuchlichsten RAID-Level sind RAID 0, RAID 1 und RAID 5<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 5/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

RAID 0 – Striping – Beschleunigung ohne Redundanz<br />

RAID 0 ist eigentlich kein echtes RAID, da es keine Redundanz vorsieht<br />

Es wird nur die Datentransferrate gesteigert<br />

Aufteilung der Festplatten in zusammenhängende Blöcke gleicher Größe<br />

Sind die Ein-/Ausgabeaufträge groß genug (> 4 oder 8 KB), können die<br />

Zugriffe auf den Verbund parallel auf mehreren oder allen Festplatten<br />

durchgeführt werden<br />

Fällt eine Festplatte aus, können die Daten nicht<br />

mehr vollständig rekonstruiert werden<br />

Nur kleinere Dateien, die vollständig auf den<br />

verbliebenen Festplatten gespeichert sind, können<br />

gerettet werden<br />

RAID 0 eignet sich nur, wenn die Sicherheit der<br />

Daten bedeutungslos ist oder eine andere geeignete<br />

Form der Datensicherung vorhanden ist<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 6/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

RAID 1 – Mirroring – Spiegelung<br />

Mindestens zwei Festplatten gleicher Kapazität enthalten exakt die<br />

gleichen Daten<br />

Sind die Festplatten unterschiedlich groß, bietet ein Verbund mit RAID 1<br />

höchstens die Kapazität der kleinsten Festplatte<br />

Der Ausfall einer Festplatte führt nicht zu Datenverlust, da die übrigen<br />

Festplatten die identischen Daten vorhalten<br />

Zum Totalverlust kommt es nur beim Ausfall aller Festplatten<br />

Jede Datenänderung wird auf allen beteiligten<br />

Festplatten geschrieben<br />

RAID 1 ist kein Ersatz für Datensicherung<br />

Fehlerhafte Dateioperationen oder Virenbefall finden<br />

auf allen Festplatten statt<br />

Die Lesegeschwindigkeit kann durch intelligente<br />

Verteilung der Zugriffe auf die angeschlossenen<br />

Platten gesteigert werden<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 7/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

RAID 2 – Bit-Level Striping mit Hamming-Code-Fehlerkorrektur<br />

Die Nutzdaten werden hierbei Blöcke gleicher Größe zerlegt und mittels<br />

eines Hamming-Codes auf größere Blöcke abgebildet<br />

Die Bits, die Potenzen von 2 sind (1, 2, 4, 8, 16, usw.) sind Prüfbits<br />

Die einzelnen Bits des Hamming-Codeworts werden über die Platten<br />

verteilt =⇒ Datendurchsatz wird durch RAID 2 gesteigert<br />

Ein mögliches Szenario:<br />

7 Festplatten im Verbund<br />

Davon 4 Platten für die Nutzdaten und 3 für die Paritätsinformationen<br />

Der kleinste RAID-2-Verbund benötigt 3 Festplatten und entspricht<br />

einem RAID 1 mit zweifacher Spiegelung<br />

In der Realität besteht ein RAID 2 aus mindestens 10 Festplatten<br />

RAID 2 wurde nur bei Großrechnern verwendet und spielt heute keine<br />

Rolle mehr<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 8/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Prinzip von RAID 2<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 9/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

RAID 3 – Byte-Level Striping mit Paritätsinformationen<br />

Speicherung der Nutzdaten auf einer oder mehreren Datenplatten<br />

Speicherung der Paritätsinformationen auf einer Paritätsplatte<br />

Berechnung der Paritätsinformationen<br />

Die Bits der Datenplatten werden zusammengezählt und die errechnete<br />

Summe darauf untersucht, ob sie eine gerade oder ungerade ist<br />

Gerade Summe wird auf der Paritätsplatte mit Bit 0 gekennzeichnet<br />

Ungerade Summe wird mit dem Bit-Wert 1 gekennzeichnet<br />

Die Paritätsplatte enthält nur die Summeninformationen<br />

Man kann beliebig viele Datenplatten verwenden und braucht für die<br />

Paritätsinformationen trotzdem nur eine einzige Platte<br />

Die Paritätsplatte wird bei jeder Operation benötigt<br />

=⇒ Sie ist der Flaschenhals des Systems<br />

Auf die Paritätsplatte wird bei jeder Schreiboperation zugegriffen<br />

Bei RAID 2 mit 2 Festplatten hat die Paritätsplatte den gleichen Inhalt<br />

wie die Datenplatte =⇒ Identisch zu RAID-1 mit zwei Festplatten<br />

RAID 3 ist vom Markt verschwunden und wurde durch RAID 5 ersetzt<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 10/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Prinzip von RAID 3<br />

Datenplatten Summe gerade/ungerade Paritätsplatte<br />

Bits sind 0 + 0 + 0 =⇒ 0 =⇒ Summe ist gerade =⇒ Summen-Bit 0<br />

Bits sind 1 + 0 + 0 =⇒ 1 =⇒ Summe ist ungerade =⇒ Summen-Bit 1<br />

Bits sind 1 + 1 + 0 =⇒ 2 =⇒ Summe ist gerade =⇒ Summen-Bit 0<br />

Bits sind 1 + 1 + 1 =⇒ 3 =⇒ Summe ist ungerade =⇒ Summen-Bit 1<br />

Bits sind 0 + 1 + 0 =⇒ 1 =⇒ Summe ist ungerade =⇒ Summen-Bit 1<br />

Bits sind 0 + 0 + 1 =⇒ 1 =⇒ Summe ist ungerade =⇒ Summen-Bit 1<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 11/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

RAID 4 – Block-Level Striping mit Paritätsinformationen<br />

Speicherung der Nutzdaten auf einer oder mehreren Datenplatten<br />

Speicherung der Paritätsinformationen auf einer Paritätsplatte<br />

Unterschied zu RAID 3:<br />

Die Einheiten, die geschrieben werden, sind größere Datenblöcke und<br />

nicht einzelne Bytes<br />

Die Datenblöcke werden auch als Chunks zeichnet<br />

Die Paritätsplatte wird bei jeder Operation benötigt<br />

=⇒ Sie ist der Flaschenhals des Systems<br />

Auf die Paritätsplatte wird bei jeder Schreiboperation zugegriffen<br />

Die Paritätsplatte fällt häufiger aus<br />

Lösung: RAID 5<br />

Anstatt RAID 4 wird fast immer RAID 5 verwendet<br />

Die Firma NetApp verwendet in ihren NAS-Servern RAID 4<br />

z.B. NetApp FAS2020, FAS2050, FAS3040, FAS3140, FAS6080<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 12/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Prinzip von RAID 4<br />

P(16-19) = Block 16 XOR Block 17 XOR Block 18 XOR Block 19<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 13/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

RAID 5 – Block-Level Striping mit verteilten Paritätsinformationen<br />

Bietet erhöhten Datendurchsatz und höhere Datensicherheit<br />

Ein Verbund besteht aus mindestens 3 Festplatten<br />

Die Nutzdaten werden wie bei RAID 0 auf alle Festplatten verteilt<br />

Es werden Paritätsinformationen der Nutzdaten berechnet, mit denen<br />

beim Ausfall maximal einer Festplatte die Nutzdaten vollständig<br />

rekonstruiert werden können<br />

Die Berechnung der Paritätsinformationen beim Ausfall einer Platte kann<br />

abhängig von der Größe des Verbunds sehr lange dauern<br />

Während dieser Zeit ist der Verbund ungeschützt<br />

Die Berechnung der Paritätsinformationen durch XOR erfordert<br />

zusätzliche Rechenleistung bei Schreibzugriffen<br />

Durch die Verteilung der Paritätsinformationen auf alle Festplatten<br />

(Rotating Parity) wird verhindert, dass eine einzelne Paritätsplatte zu<br />

einem möglichen Engpass (Flaschenhals) wird<br />

Die Nettokapazität ist n − 1, wobei n die Anzahl der Festplatten ist<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 14/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Prinzip von RAID 5<br />

P(16-19) = Block 16 XOR Block 17 XOR Block 18 XOR Block 19<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 15/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

RAID 6 – Block-Level Striping mit doppelt verteilten Paritätsinformationen<br />

Funktioniert ähnlich wie RAID 5<br />

Verkraftet aber den gleichzeitigen Ausfall von bis zu zwei Festplatten<br />

RAID 6 ist Striping mit doppelten, auf Block-Level verteilten<br />

Paritätsinformationen<br />

Im Gegensatz zu RAID 5 gibt es mehrere mögliche<br />

Implementierungsformen, die sich insbesondere in der Schreibleistung<br />

und dem Rechenaufwand unterscheiden<br />

Bessere Schreibleistung wird durch erhöhten Rechenaufwand erkauft<br />

Im einfachsten Fall wird eine zusätzliche XOR-Operation berechnet<br />

Im Gegensatz zu RAID 5 ist die Verfügbarkeit höher, aber der<br />

Datendurchsatz insgesamt niedriger<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 16/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Prinzip von RAID 6<br />

Das Beispiel ist nur eine mögliche Realisierung von RAID 6<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 17/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Übersicht über die RAID-Level<br />

RAID n (Anzahl k (Netto- Ausfall- Leistung Leistung<br />

Festplatten) kapazität) sicherheit (Lesen) (Schreiben)<br />

0 ≥ 2 n 0 (keine) n ∗ X n ∗ X<br />

1 ≥ 2 Kapazität der n − 1 Platten n ∗ X X<br />

kleinsten Platte<br />

2 ≥ 3 n − [log 2 n] 1 Platte variabel variabel<br />

3 ≥ 3 n − 1 1 Platte (n − 1) ∗ X (n − 1) ∗ X<br />

4 ≥ 3 n − 1 1 Platte (n − 1) ∗ X (n − 1) ∗ X<br />

5 ≥ 3 n − 1 1 Platte (n − 1) ∗ X (n − 1) ∗ X<br />

6 ≥ 4 n − 2 2 Platten (n − 2) ∗ X (n − 2) ∗ X<br />

X Ist die Leistung einer einzelnen Platte beim Lesen bzw. Schreiben<br />

Die maximale theoretisch mögliche Leistung wird häufig vom Controller<br />

bzw. der Rechenleistung des Hauptprozessors eingeschränkt<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 18/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

RAID-Kombinationen<br />

RAID 0, 1 und 5 finden die weitaus größte Verwendung<br />

Zusätzlich zu den bekannten RAID-Standards (Leveln) gibt es noch<br />

verschiedene RAID-Kombinationen<br />

Dabei wird ein RAID nochmals zu einem zweiten RAID zusammengefasst<br />

Beispiel: aus mehreren RAID 0-Verbünden wird ein RAID 5-Array<br />

gebildet =⇒ RAID 05 (0+5)<br />

Weitere Beispiele<br />

RAID 00: Großes RAID 0 mit mindestens 4 Festplatten<br />

RAID 01: RAID 1, das aus mehreren RAID 0 besteht<br />

RAID 10: RAID 0 über mehrere RAID 1<br />

RAID 03 bzw. RAID 30: RAID 3 über mehrere RAID 0<br />

RAID 05: RAID 5, das aus mehreren RAID 0 besteht<br />

RAID 15: RAID 5, das aus mindestens drei RAID 1 besteht<br />

RAID 50: RAID 0, das aus mehreren RAID 5 besteht<br />

RAID 51: RAID 1, das aus mehreren RAID 5 besteht<br />

RAID 60: RAID 0, das aus mehreren RAID 6 besteht<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 19/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Hardware-RAID, Host-RAID und Software-RAID<br />

Hardware-RAID<br />

Ein RAID-Controller kümmert sich um die Zusammenarbeit den<br />

Festplatten<br />

Host-RAID<br />

Es werden entweder preiswerte RAID-Controller oder einfach der Chipsatz<br />

auf dem Mainboard eingesetzt<br />

Das Berechnen der Paritätsinformationen wird der CPU überlassen<br />

Software-RAID<br />

Mit modernen <strong>Betriebssysteme</strong>n lassen sich Festplatten auch ohne<br />

RAID-Controller zu einem RAID zusammenschließen<br />

Linux und Windows können RAID 0, RAID 1 und RAID 5 bereitstellen<br />

MacOS X kennt RAID 0 und RAID 1<br />

Preiswerter als Hardware-RAID und flexibler als Host-RAID<br />

Problematisch sind die Betriebssystemabhängigkeit und zusätzliche<br />

Belastung der CPU<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 20/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Zeichenorientierte und Blockorientierte Geräte<br />

Geräte an einem Computersystem werden bezüglich der kleinsten<br />

Übertragungseinheit in zeichenorientierte und blockorientierte Geräte<br />

unterschieden<br />

Zeichenorientierte Geräte: Bei der Ankunft/Anforderung jedes<br />

einzelnes Zeichens wird immer mit dem Prozessor kommuniziert<br />

Beispiele: Maus, Tastatur, Drucker, Terminals und Magnetbänder<br />

Blockorientierte Geräte: Die Datenübertragung wird erst bei Vorliegen<br />

eines kompletten Blocks (z.B. 1-4 KB) angestoßen<br />

Beispiele: Festplatten, CD-/DVD-Laufwerke und Disketten-Laufwerke<br />

Die meisten blockorientierten Geräte unterstützen Direct Memory Access<br />

(DMA), um Daten ohne Prozessorbeteiligung zu übertragen<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 21/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Drei Möglichkeiten um Daten einzulesen<br />

Soll z.B. ein Datensatz von einer Festplatte gelesen werden, sind<br />

folgende Schritte notwendig:<br />

Die CPU bekommt von einem Programm die Anforderung, einen<br />

Datensatz von einer Festplatte zu lesen<br />

Die CPU schickt dem IDE-Controller mit Hilfe des installierten Treibers<br />

einen entsprechenden I/O-Befehl<br />

Der Controller lokalisiert den Datensatz auf der Festplatte<br />

Abschließend erhält die Anwendung die angeforderten Daten<br />

Es gibt drei Möglichkeiten, wie die Anwendung die Daten einliest:<br />

Busy Waiting (geschäftiges bzw. aktives Warten)<br />

Interrupt-gesteuert<br />

Direct Memory Access (DMA)<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 22/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Busy Waiting (geschäftiges bzw. aktives Warten)<br />

Der Treiber sendet die Anfrage an das Gerät und wartet in einer<br />

Endlosschleife, bis der Controller anzeigt, dass die Daten bereit stehen<br />

Stehen die Daten bereit, werden sie in den Speicher geschrieben und die<br />

Anwendung kann weiterarbeiten<br />

Vorteile:<br />

Leicht zu implementieren<br />

Nachteile:<br />

Belastet den Prozessor<br />

Behindert die gleichzeitige Abarbeitung mehrerer Programme, da<br />

regelmäßig überprüft werden muss, ob die Daten bereit stehen<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 23/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Interrupt-gesteuert<br />

Benötigt einen zusätzlichen Interrupt-Controller und Leitungen für das<br />

Senden der Interrupts<br />

Der Treiber initialisiert die Aufgabe und wartet auf einen Interrupt<br />

(Unterbrechung) durch den Controller =⇒ Der Treiber schläft<br />

Die CPU ist während des Wartens auf den Interrupt nicht blockiert und<br />

das Betriebssystem kann die anderen Anwendungen weiter abarbeiten<br />

Kommt es zum Interrupt, wird der Treiber dadurch geweckt und die<br />

CPU in ihrer momentanen Arbeit unterbrochen<br />

Danach holt die CPU die Daten vom Controller ab und legt sie in den<br />

Speicher<br />

Anschließend kann die CPU ihre unterbrochene Arbeit fortsetzen<br />

Vorteile:<br />

Die CPU wird nicht blockiert<br />

Gleichzeitige Abarbeitung mehrerer Programme wird nicht behindert<br />

Nachteile:<br />

Es ist zusätzliche Hardware notwendig<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 24/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Direct Memory Access (DMA)<br />

Bei DMA kommt ein zusätzlicher DMA-Baustein zum Einsatz<br />

Der DMA-Baustein kann ohne Mithilfe der CPU, Daten direkt zwischen<br />

Speicher und Controller übertragen<br />

Der DMA-Baustein wird mit den notwendigen Informationen<br />

(Speicherstelle, Anzahl der Bytes, Controller, usw.) initialisiert und<br />

erzeugt nach Beendigung einen Interrupt<br />

Direct Memory Access wird nicht nur für den Zugriff auf Datenträger<br />

verwendet, sondern auch zum beschleunigten und CPU entlastenden<br />

Zugriff auf Peripheriegeräte wie zum Beispiel:<br />

Soundkarten, ISDN-Karten, Netzwerkkarten, TV-/DVB-Karten<br />

Vorteile:<br />

Vollständige Entlastung der CPU<br />

Gleichzeitige Abarbeitung mehrer Programme wird nicht behindert<br />

Nachteile:<br />

Hoher Hardware-Aufwand<br />

Neben dem Interrupt-Controller wird noch ein DMA-Baustein benötigt<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 25/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Speicheradressierung und Speicherverwaltung<br />

Auf 16 Bit-Architekturen sind 2 16 Speicheradressen und damit bis zu<br />

65.536 Byte, also 64 Kilobyte adressierbar<br />

Auf 32 Bit-Architekturen sind 2 32 Speicheradressen und damit bis zu<br />

4.294.967.296 Byte, also 4 Gigabyte adressierbar<br />

Auf 64 Bit-Architekturen sind 2 64 Speicheradressen und damit bis zu<br />

18.446.744.073.709.551.616 Byte, also 16 Exabyte adressierbar<br />

! ! ! Frage ! ! !<br />

Wie wird der Speicher eines Computers angesprochen und verwaltet?<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 26/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Speicheradressierung und Speicherverwaltung (2)<br />

Bei Einzelprogrammbetrieb (Singletasking) wird der Hauptspeicher in<br />

zwei Bereiche unterteilt<br />

Ein Bereich für das Betriebssystem und einer für das aktuell ausgeführte<br />

Programm<br />

Beim Mehrprogrammbetrieb (Multitasking) muss der Benutzer-Bereich<br />

des Hauptspeichers weiter unterteilt werden, damit die gestarteten<br />

Prozesse im Speicher aufgenommen werden können<br />

Folgende Anforderungen sind zu beachten:<br />

Relokation<br />

Schutz<br />

Gemeinsame Nutzung<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 27/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Anforderungen and die Speicheradressierung/-verwaltung<br />

Relokation<br />

Mehrere Prozesse befinden sich im Hauptspeicher<br />

Werden Prozesse aus dem Hauptspeicher verdrängt, ist nicht bekannt, an<br />

welcher Stelle sie später wieder in den Hauptspeicher geladen werden<br />

Bindungen an den alten Ort im Speicher sind ungünstig<br />

Eine freie Ortswahl wäre vorteilhaft<br />

Probleme sind u.a. bei Sprüngen und Referenzen auf Daten zu erwarten<br />

Schutz<br />

Speicherbereiche müssen geschützt werden vor unbeabsichtigtem oder<br />

unzulässigem Zugriff durch anderen Prozesse<br />

Darum müssen alle Zugriffe (durch die CPU) überprüft werden<br />

Gemeinsame Nutzung<br />

Trotz Speicherschutz muss eine Kooperation der Prozesse mit<br />

gemeinsamem Speicher (Shared Memory) möglich sein<br />

Es soll auch möglich sein, dass mehrere Prozesse das gleiche Programm<br />

ausführen und der Code nur einmal im Speicher ist<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 28/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Idee: Direkter Zugriff auf die Speicherstellen<br />

Prozess A<br />

Prozess B<br />

Prozess C<br />

(Zellen: 0 8)<br />

(Zellen: 1 5 9)<br />

(Zellen: 2 4 7)<br />

Hauptspeicher<br />

Zelle 0<br />

Zelle 1<br />

Zelle 2<br />

Zelle 3<br />

Zelle 4<br />

Zelle 5<br />

Zelle 6<br />

Zelle 7<br />

Zelle 8<br />

Zelle 9<br />

. . .<br />

Naheliegende Idee des direkten Speicherzugriffs durch die Prozesse<br />

=⇒ Real Mode<br />

Leider nicht möglich in Multitasking-Systemen<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 29/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Real Mode (Real Address Mode)<br />

Der Real Mode ist eine Betriebsart x86-kompatibler Prozessoren<br />

Im Real Mode existiert kein Zugriffsschutz<br />

Jeder Prozess kann auf den gesamten Hauptspeicher und die Hardware<br />

zugreifen<br />

Das ist für Multitasking-<strong>Betriebssysteme</strong> inakzeptabel<br />

Die Bezeichnung wurde mit dem Intel 80286 eingeführt<br />

Im Real Mode greift der Prozessor wie ein Intel 8086-Prozessor auf den<br />

Hauptspeicher zu<br />

Jeder x86-kompatible Prozessor startet nach dem Reset im Real Mode<br />

Der Real Mode ist der Standardmodus für MS-DOS und dazu<br />

kompatible <strong>Betriebssysteme</strong> (u.a. PC-DOS, DR-DOS und FreeDOS)<br />

Neuere <strong>Betriebssysteme</strong> verwenden ihn nur noch während der<br />

Startphase und schalten dann in den Protected-Mode um<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 30/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Protected Mode (Schutzmodus)<br />

Der Protected Mode ist eine Betriebsart x86-kompatibler Prozessoren<br />

Eingeführt mit dem Intel 80286<br />

Erlaubt die Begrenzung von Speicherzugriffsrechten<br />

Erhöht die Menge des direkt zugreifbaren Speichers<br />

16-Bit Protected Mode beim 80286 =⇒ 16 MB Hauptspeicher<br />

32-Bit Protected Mode beim 80386 =⇒ 4 GB Hauptspeicher<br />

Der Protected Mode basiert auf dem Konzept des virtuellen Speichers<br />

Mit der Memory Management Unit (MMU) kann einem Prozess jederzeit<br />

ein vollständiger Adressraum wie im Real Mode bereitgestellt werden<br />

Virtuelle Speicheradressen werden von der CPU mit Hilfe der MMU in<br />

physikalische Speicheradressen übersetzt<br />

Jeder Prozess wird in seiner eigenen, von anderen Prozessen<br />

abgeschotteten Kopie des physischen Adressraums ausgeführt<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 31/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Speicherpartitionierung<br />

Statische Partitionierung<br />

Dynamische Partitionierung<br />

Buddy-Algorithmus<br />

Alle diese Konzepte werden nicht so 1:1 von modernen <strong>Betriebssysteme</strong>n<br />

angewendet und gelten als veraltet. Sie stellen aber grundlegendes Wissen<br />

dar und sind das Fundament des virtuellen Speichers<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 32/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Statische Partitionierung<br />

Bei statischer Partitionierung wird der verfügbare Hauptspeicher in<br />

Partitionen gleicher oder unterschiedlicher Größe unterteilt<br />

Jeder Prozess, dessen Größe kleiner-gleich einer Partition ist, kann eine<br />

freie Partition erhalten<br />

Benötigt ein Prozess mehr Speicher, als eine Partition groß ist, muss es<br />

zum Overlay kommen<br />

Dabei werden einzelne Daten eines Prozesses überschrieben<br />

Der Entwickler muss die Anwendung so schreiben, dass immer nur ein<br />

Teil der Daten im Speicher notwendig ist und Daten überschrieben<br />

werden können<br />

Dieses Vorgehen ist ineffizient und fehleranfällig<br />

Weitere Nachteile von statischer Partitionierung sind:<br />

Es kommt zwangsläufig zu interner Fragmentierung. Dieses Problem wird<br />

durch Partitionen unterschiedlicher Größe abgemildert, aber nicht gelöst<br />

Anzahl der möglichen Prozesse ist durch die Anzahl der Partitionen<br />

limitiert<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 33/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Beispiel zur statischen Partitionierung<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 34/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Speicherbelegungsverfahren (Statische Partitionierung)<br />

Die Speicherbelegung bei statischer Partitionierung ist sehr einfach<br />

Werden Partitionen gleicher Größe verwendet, ist es egal, welche freie<br />

Partition ein Prozess zugewiesen wird<br />

Sind alle Partitionen belegt, muss ein Prozess aus dem Hauptspeicher<br />

verdrängt werden. Die Entscheidung welcher Prozess verdrängt wird,<br />

hängt vom verwendeten Scheduling-Verfahren ab<br />

Werden Partitionen unterschiedlicher Größe verwendet, gibt es zwei<br />

Möglichkeiten um Prozessen Partitionen im Speicher zuzuweisen<br />

Prozesse sollen eine möglichst passgenaue Partition erhalten, damit wenig<br />

interne Fragmentierung entsteht. Es ist eine eigene<br />

Prozess-Warteschlange für jede Partition nötig. In jeder Warteschlange<br />

werden die ausgelagerten Prozesse abgebildet. Bei diesem Verfahren kann<br />

es vorkommen, dass bestimmte Partitionen nie genutzt werden<br />

Eine einzelne Warteschlange für alle Partitionen. So kann die Zuweisung<br />

der Partitionen an die Prozesse besser kontrolliert werden<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 35/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Speicherbelegungsverfahren<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 36/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Dynamische Partitionierung<br />

Bei dynamischer Partitionierung wird der Speicher in<br />

zusammenhängende Partitionen unterschiedlicher Größe unterteilt<br />

Jeder Prozess erhält eine zusammenhängende Partition mit exakt der<br />

notwendigen Größe<br />

Durch das unvermeidliche Einlagern und Verdrängen von Prozessen<br />

kommt es zu externer Fragmentierung<br />

Eine Möglichkeit um diese Fragmentierung zu beheben ist<br />

Kompaktierung (Defragmentierung)<br />

Dieses setzt die Verschiebbarkeit von Speicherblöcken voraus<br />

Verweise in den Applikationen dürfen durch ein Verschieben von<br />

Datenblöcken nicht ungültig werden<br />

Die Mainframe-<strong>Betriebssysteme</strong> OS/MVT und OS/MFT von IBM<br />

nutzten in den 60er Jahren dynamische bzw. statische Partitionierung<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 37/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Beispiel zur dynamischen Partitionierung<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 38/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Speicherbelegungsverfahren (Dynamische Partitionierung)<br />

First Fit<br />

Sucht vom Speicheranfang nach einem passenden freien Block<br />

Einfachstes und schnellstes Verfahren<br />

Next Fit<br />

Sucht ab der Stelle der letzten Blockzuweisung nach einem passenden<br />

freien Block<br />

Etwas schlechter als First Fit. Zerstückelt schnell den großen Bereich<br />

freien Speichers am Ende des Adressraums<br />

Best Fit<br />

Sucht einen Block mit optimaler Größe<br />

Produziert viele Minifragmente und arbeitet am langsamsten<br />

Worst Fit<br />

Sucht den größten freien Block<br />

Random<br />

Liefert manchmal sehr gute Ergebnisse und ist schnell<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 39/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Beispiel zum Speicherbelegungsverfahren<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 40/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Buddy-Verfahren von Donald E. Knuth<br />

Versucht die Vorteile fester und dynamischer Partitionierung zu nutzen<br />

Speicher wird in Bereiche der Länge 2 K mit L ≤ K ≤ U aufgeteilt<br />

2 L ist der kleinste Block der zugewiesen wird<br />

2 U ist der größte Block der zugewiesen wird (der komplette Speicher)<br />

Zu Beginn gibt es nur einen Block, der den gesamten Speicher abdeckt<br />

Fordert ein Prozess eine Speicher an, wird zur nächsthöheren<br />

Zweierpotenz aufgerundet und ein entsprechender, freier Block gesucht<br />

Existiert noch kein Block dieser Größe, wird nach einem Block doppelter<br />

Größe gesucht und dieser in zwei Hälften (sogenannte Buddies) unterteilt<br />

Einer der beiden Blöcke wird dann dem Prozess zugewiesen<br />

Existiert auch kein Block doppelter Größe, wird ein Block vierfacher<br />

Größe gesucht, usw. . .<br />

Wird Speicher freigegeben, wird geprüft, ob zwei Hälften gleicher Größe<br />

sich wieder zu einem größeren Block zusammenfassen lassen<br />

Die Implementierungsvarianten von Knuth basieren darauf, dass das<br />

Betriebssystem für jede möglich Segmentgröße eine Frei-Liste verwaltet<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 41/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Beispiel zum Buddy-Verfahren<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 42/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Relokation<br />

Bei statischer Partitionierung mit eigener Prozess-Warteschlange für alle<br />

vorhandenen Partitionen kann davon ausgegangen werden, dass ein<br />

Prozess immer der gleichen Partition zugewiesen wird<br />

Bei gleich großen Partitionen im Hauptspeicher oder einer einzelnen<br />

Prozess-Warteschlange für alle vorhandenen Partitionen kann ein<br />

Prozess im Laufe seines Bestehens unterschiedliche Partitionen belegen<br />

Das gleiche gilt auch für die dynamische Partitionierung<br />

Darum dürfen sich in Prozessen keine festen Referenzen auf<br />

Speicherstellen befinden<br />

Es werden verschiedene Arten von Speicheradressen unterschieden:<br />

Logische Adressen<br />

Relative Adressen<br />

Physikalische Adressen<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 43/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Relokation: Adressen<br />

Logische Adresse<br />

Eine logische Adresse ist ein Speicherpunkt im Adressraum eines<br />

Prozesses<br />

Bevor ein Speicherzugriff erfolgen kann, muss eine logische Adresse in<br />

eine relative Adresse umgewandelt werden<br />

Relative Adresse<br />

Eine relative Adresse sind ein Sonderfall einer logischen Adressen<br />

Es ist eine logische Adresse, bezogen auf einen festen, bekannten<br />

Anfangspunkt. Dabei handelt es sich um den Programmanfang<br />

Physikalische Adresse<br />

Eine physikalische Adresse ist eine absolute Adresse, eine konkrete Stelle<br />

im Hauptspeicher<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 44/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Relokation: Adressen (2)<br />

Wechselt ein Prozess in den Zustand aktiv, wird das Basisregister in<br />

der CPU mit der Anfangsadresse des Prozesses im Hauptspeicher belegt<br />

Es existiert auch ein Grenzregister, dass das Ende des Prozesses<br />

kennzeichnet<br />

Bei der Prozessausführung treten u.a. an folgenden Positionen relative<br />

Adressen auf:<br />

Im Befehlsregister<br />

Als Befehlsadressen in Sprung- und Aufrufbefehlen<br />

Als Datenadressen bei Laden- und Speicherbefehlen<br />

Jede relative Adresse wird von der CPU um den Wert des Basisregisters<br />

erhöht<br />

Dadurch entsteht eine physische Adresse<br />

Die physische Adresse wird mit dem Grenzregister verglichen<br />

Befindet sich die Adresse innerhalb der Grenzen, wird der Befehl<br />

ausgeführt<br />

Andernfalls wird ein Interrupt an das Betriebssystem gesendet, dass dann<br />

auf den Fehler reagieren muss<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 45/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Relokation: Hardwareunterstützung<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 46/47


RAID Ein-/Ausgabegeräte Speicheradressierung und Speicherverwaltung<br />

Nächste Vorlesung<br />

Nächste Vorlesung:<br />

6.5.2011<br />

Christian Baun – <strong>4.Vorlesung</strong> <strong>Betriebssysteme</strong> – <strong>Hochschule</strong> <strong>Mannheim</strong> – SS2011 47/47

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!