4.Vorlesung Betriebssysteme Hochschule Mannheim
4.Vorlesung Betriebssysteme Hochschule Mannheim
4.Vorlesung Betriebssysteme Hochschule Mannheim
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