7. Speicherverwaltung Ziele Zuteilung des Arbeitsspeicher Abbildung der symbolischen Adresse auf die physikalische Adresse Adress-Transformation Symbolische Adresse verschiebbare Adresse physikalische Adresse Adress-Bindung Compilationszeit Bindezeit Ladezeit Ausführungszeit Betriebse Harald Kosch Seite
Monoprogrammierung Das Betriebs belegt feste Speicherbereiche. Der freie Speicher wird einem Benutzerprogramm zur Verfügung gestellt. Das Benutzerprogramm organisiert seinen Speicherbedarf selber, z.b. Statische (global), dynamische (heap) und halbdynamische (stack) Daten Overlay von Programmen (Programm wird in mehreren Phasen geladen) XFFF Betriebssytem im ROM Gerätetreiber im ROM Benutzerprogramm Benutzerprogramm Benutzerprogramm Betriebssytem im RAM (a) (b) Betriebssytem im RAM (c) Figure : Drei Arten der Speicherorganisation mit dem Betriebs und einem Benutzerprozeß Betriebse Harald Kosch Seite
Multiprogrammierung CPU-Ausnützung = - p n wobei p die Wahrscheinlichkeit ist, daß ein Prozeß untätig (wartend) ist, und n die Anzahl der Prozesse ist. 8 6 CPU-Ausnutzung (in Prozent) % E/A-Wartezeit 5% E/A-Wartezeit 8% E/A-Wartezeit 5 6 7 8 9 Multiprogrammierungsgrad Figure : CPU-Ausnutzung als eine Funktion von der Anzahl der im Speicher gehaltenen Prozesse Betriebse Harald Kosch Seite 5
benötigte Ankunfts- CPU- Auftrag zeit Minuten : : :5 : (a) # Prozesse CPU untätig.8.6.5. CPU beschäftigt..6.9.59 CPU/Prozeß..8.6.5 (b) Auftrag..9.8. Auftrag beginnt.9.8..9..8.. Auftrag terminiert 5 7.6 8..7 Zeit relativ zum Ankommen des Auftrags (c).9.9..7 Figure : (a) Ankunft und benötigte Arbeit der vier Aufträge. (b) CPU- Ausnutzung der Aufträge bis mit 8%-iger E/A-Wartezeit. (c) Folge der Ereignisse, wie die Aufträge ankommen und enden Betriebse Harald Kosch Seite 6
Feste Partitionierung Eine oder mehrere Warteschlangen. Anwendungen in die am besten passende Partition. Viel zu große Anwendungen sind ausgeschlossen. Viel zu kleine Anwendungen verschwenden Speicher (interne Fragmentierung). IBM OS/MFT. Mehrere Eingabeschlangen Partition 7 K Partition Partition Eine Eingabeschlange Partition K Partition Partition Betriebs (a) K K Partition Partition Betriebs (b) Figure 5: (a) Feste Speicherpartitionierung mit getrennten Eingabeschlangen für jede Partition (b) Feste Speicherpartitionierung mit einer einzigen Eingabeschlange Partitionierung mit variablen Größen Löst die Probleme von MFT, muß aber das Problem der externen Fragmentierung lösen. IBM OS/MVT Betriebse Harald Kosch Seite 7
Fragmentierung des Speichers K K K K K P P P P terminates allocate P5 P5 K K K K K P P" terminates allocate P P P P 7 K 7 K 7 K K K K K K P P P P P K K K K K 56 K 56 K 56 K 56 K 56 K Figure 6: Speicherverwaltung und long-term Scheduling Externe Fragmentierung bei variablen Blockgrößen Die zusammenhängenden Bereiche (Partitionen) werden immer kleiner Interne Fragmentierung bei festen Blockgrößen Innerhalb der Partitionen bleiben unausgenützte Bereiche Betriebse Harald Kosch Seite 8
Speicherverdichtung K K P5 P5 K 9 K P P (a) 7 K 6 K P K 9 K P K 56 K 56 K K 5 K 6 K P P K K 5 K 6 K 8 K P P P K 5 K 6 K P P P K 5 K 6 K P P K K P K P K K P 9 K (b) K 5 K 5 K P 9 K 9 K P 9 K K K original allocation K moved 6 K K moved K 9 K P K moved K Figure 7: (a) Verdichtung (b) Vergleich einiger Verdichtungsmöglichkeiten Dynamische Verschiebung von Partitionen Zeitaufwendig: Optimierung notwendig Benutzung von ausgeklügelten Allozierungsstrategien Betriebse Harald Kosch Seite 9
Allozierungsstrategien Blöcke fester Länge (Bitmap oder Liste) Bitmap ist einfach, aber langsam, rigide und fehleranfällig A (b) B C 8 6 (a) P 5 H 5 P 8 6 P H 8 P 6 P 6 H 9 X D E Loch Länge Start bei 8 (c) Prozeß Figure 8: Ein Teil des Speichers mit fünf Prozessen und drei Löchern. Die schattierten Bereiche ( in der Bitmap) sind frei. (b) Die korrespondierende Bitmap. (c) Dieselbe Information als verknüpfte Liste. Blöcke variabler Länge (Listen der freien und der allozierten Blöcke) first fit (nehme den ersten passenden Block) next fit (first fit ab letzter Stelle) best fit (langsam) worst fit (Löcher bleiben größer, ist aber langsam) quick fit (getrennte Liste für häufige Fälle) Deallozierung langsam: Nachbarn sollten zusammengeschmolzen werden. Betriebse Harald Kosch Seite
Allozierung mit dem Buddy-System (D.E Knuth) Memory 8 K 56 K 8 K 5 K 6 K 768 K 896K M Holes Start Request for 7 Request for 5 Request for 8 Return of A Request for 6 Return of B Return of D Return of C A 8 56 5 A B 6 56 5 A 8 8 8 B B B 6 6 6 D D C C C C 8 8 8 8 5 5 5 5 56 C 8 5 Figure 9: Das Buddy-System. Die horizontalen Achsen repräsentieren die Speicheradressen. Die Nummern sind die Größe der nichtallozierten Speicherblöcke in K. Die Buchstaben stellen allozierte Speicherblöcke dar. Die Blockgröße sind Zweierpotenzen Jede Größe ist auf einer eigenen Liste Blöcke werden so lange halbiert, bis ein geeigneter Block entsteht Schnell beim Allozieren und Deallozieren (kurze Liste) Große interne Fragmentierung Wird in Linux als Basisalgorithmus verwendet (zusätzlich zu demand paging) Betriebse Harald Kosch Seite
Allozierungsstrategie: Paging logical address physical address CPU p d f d Memory p{ f page table Figure : Paging Hardware Der Hauptspeicher wird in Seiten fester Größe aufgeteilt Abbildung: logische Adresse physikalische Adresse Unterstützung der Hardware Memory Management Unit (MMU) Physikalisch verteilte Speicher werden logisch zusammenhängend gemacht (Verdichtung nicht mehr nötig!) Betriebse Harald Kosch Seite
frame number page page page page logical memory 7 page table 5 6 page page page 7 page physical memory Figure : Paging Modell mit logischem und physikalischem Speicher Page (Seite) Frame (Kachel) Page Größen: 56, 5,... 96 Bytes p = U DIV P d = U MOD P P: Page size, U: logische Adresse p: Page Nummer, d: Offset in der Page Wenn P eine Zweierpotenz ist, dann: p d Betriebse Harald Kosch Seite
5 6 7 8 9 5 a b c d e f g h i j k l m n o p logical memory 5 6 page table i j k l 8 m n o p 6 8 a b c d e f g h physical memory Figure : Paging-Beispiel mit -Byte Pages P =, Speichergröße = 8 Pages ( = Bytes) Der logische Adreßraum des Beispielprozesses beträgt Pages = 6 Bytes Paging ist eine Art dynamische Reallokation. Alle logischen Adressen werden auf physikalische Adressen abgebildet. Virtueller Speicher: Anzahl logischer Adressen physikalische Adressen. Betriebse Harald Kosch Seite
Reentranter Code Ed Ed Ed Data job Ed Ed Ed Data job 6 page table for job 6 page table for job Ed Ed 6 Ed 7 page table Data for job job 5 6 7 8 9 Data Data Ed Ed Ed Data Figure : Codesharing mit Pages Betriebse Harald Kosch Seite 5
Implementierung von Page Tabellen Second level page tables Top level page table... Page table for the top M of memory Bits PT PT Offset (a)... (b)... To pages Figure : (a) Eine -bit Adresse mit zwei Pagetable-Feldern. Page-Tabellen (b) Zweistufige Kleine Page-Tabelle Spezialregister (bis 56) Große Page-Tabelle Tabelle im Speicher eventuell Cache (TLB - Translation Lookaside Buffer) Einschränkung der Größe: mehrschichtige Tabellen Betriebse Harald Kosch Seite 6
Zuteilung an Jobs (a) New Job page page page page Free Frame List 8 5 5 6 7 8 9 Free Frame List 5 page page New Job page page page page 5 6 7 8 page (b) New Job Page Table 8 9 page Keine externe Fragmentierung Interne Fragmentierung P/ in der letzten Seite eines zusammenhängendes Bereiches Betriebse Harald Kosch Seite 7
Invertierte Page-Tabelle Konventionelle Seitentabelle für einen Prozeß Systemweite invertierte Seitentabelle Flag Bit Seitenrahmen Pid Flag Bit Seitenrahmen virtuelle Seite K virtuelle Seite virtuelle Seite virtuelle Seite.... Seitenrahmen Seitenrahmen Seitenrahmen.... Eintrag der ausgewählten virtuellen Seite K Eintrag der ausgewählten virtuellen Seite K (a) (b) Figure 5: (a) Eine konventionelle Seitentabelle (b) Eine invertierte Seitentabelle Wird bei Rechnern mit viel Adressbits (6 bit) aktuell Die Page-Tabellen würden unrealistisch groß werden Die Tabelle wird nach den physikalischen Seite geordnet Fehlt eine Seite, so muß die Tabelle nach der logischen Adresse durchsucht werden Hashing kann (muß) das Verfahren beschleunigen Betriebse Harald Kosch Seite 8
Segmentierung subroutine stack s{ segment table limit base sqrt symbol table CPU (s, d) main program < no yes trap; addressing error physical memory logical address space (a) (b) Figure 6: (a) Benutzersicht eines Programms (b) Segmentation Hardware Speicher besteht aus Blöcken variabler Länge (Segmente) näher der Benutzersicht Interne Fragmentierung fällt weg Externe Fragmentierung bleibt Problem Verdichtung relativ einfach alles ist verschiebbar Betriebse Harald Kosch Seite 9
subroutine Segment sqrt stack Segment symbol table Segment Segment Table limit base 6 7 Segment Segment Segment main program Segment Segment 7 Segment 57 logical address space (a) 6 Segment 67 physical memory Figure 7: Beispiel zu Segmentierung Segment Table Implementierung: Register (PDP /5) s d 5 8 p 8 kb Memory Segment Table Base Register (STBR) Segment Table Length Register (STLR) Cache Betriebse Harald Kosch Seite
Segmentierung und Paging kombiniert z.b. die Lösung ab Intel 886 (der 86er kennt nur Segmentierung) Programmsicht: Segmentierung. Die Segmente können aus Speicherzellen oder Seiten bestehen. Selektor: wählt ein Segment aus. Bits Index = GDT/ = LDT Privilege level (-) Figure 8: Selector des Intel Pentium Deskriptor: Beschreibt ein Segment : 6-Bit segment : -Bit segment : Li is in bytes : Li is in pages : Segment is absent from memory : Segment is present in memory Privilege level ( - ) : System : Application Segment type and protection Base - G D Limit 6-9 P DPL S Type Base 6 - Base - 5 Limit - 5 Bits Relative address Figure 9: Ein Pentium Code Segment Descriptor Seite: kb Betriebse Harald Kosch Seite
Lineare Adresse -bit virtuelle Adresse Selector Offset Descriptor Base address Limit Other fields -Bit linear address Figure : Umwandlung eines (Selektor, Offset) Paares in eine lineare Adresse Page-Directory Jedem Prozeß gehört ein zweischichtiges Directory. Eine Pagetabelle kann KB = MB behandeln. Unnötige Tabellen werden nicht erzeugt (für Speicher < MB genügt z.b. nur eine) Linear address Bits Dir Page Offset Page directory Page table Word selected Page frame Entries Dir Page Offset Directory entry points to page table Page table entry points to word Figure : Mapping einer linearen Adresse auf eine physikalische Adresse Betriebse Harald Kosch Seite