ich war hier: BSys07Speicherverwaltung

Version [22488]

Dies ist eine alte Version von BSys07Speicherverwaltung erstellt von RonnyGertler am 2013-03-26 21:08:06.

 

 (image: http://wdb.fh-sm.de/uploads/QualipaktLehre/BMBF_Logo_klein.jpg)

Betriebssysteme (Betriebssystemtheorie) - Kapitel 7 - Speicherverwaltung

Attachments
File Last modified Size
BSys35.gif 2023-10-06 18:35 7Kb
BSys36.gif 2023-10-06 18:35 7Kb
BSys37.gif 2023-10-06 18:35 11Kb
BSys38.gif 2023-10-06 18:35 11Kb
BSys39.gif 2023-10-06 18:35 11Kb
BSys40.gif 2023-10-06 18:35 5Kb
BSys41.gif 2023-10-06 18:35 16Kb
BSys42.gif 2023-10-06 18:35 5Kb
BSys43.gif 2023-10-06 18:35 13Kb
BSys44.gif 2023-10-06 18:35 23Kb
BSys45.gif 2023-10-06 18:35 23Kb
BSys46.gif 2023-10-06 18:35 4Kb
BSys47.gif 2023-10-06 18:35 14Kb
BSys48.gif 2023-10-06 18:35 9Kb
BSys49.gif 2023-10-06 18:35 5Kb
BSys50.gif 2023-10-06 18:35 2Kb
BSys51.gif 2023-10-06 18:35 12Kb
BSys52.gif 2023-10-06 18:35 12Kb

Inhalte von Dr. E. Nadobnyh


7.1 Einführung


Aufgaben der Speicherverwaltung


1) Zuteilung (Allokation) und Freigabe von Speicherbereichen für mehrere Adressräume.

2) Die Abbildung der logischen Adressen auf die physische Adresse.

3) Führung einer Übersicht über freie und belegte Teile des Arbeitsspeichers.

4) Speicherbereinigung und Speicherverdichtung.

5) Auslagerung von Speicherbereichen auf einen Sekundärspeicher.

6) Speicherschutz der Adressräume von unbefugten Speicherzugriffen anderer Prozesse.


Grundbegriffe


1) Eine logische Adresse (Programmadresse) wird von einem Prozess generiert und von der CPU verwendet. Sie ist z.B. der Inhalt des Zeigers.

2) Eine physische Adresse (Speicheradresse) wird beim Speicherzugriff verwendet.

3) Eine Adresstransformation ist eine Abbildung von logischen Adressen auf die physischen. Sie findet bei jedem Speicherzugriff statt.

4) Ein Adressraum (logischer Adressraum) ist eine Menge von logischen Adressen, die ein Prozess zur Adressierung des seinen Speichers generieren kann. Er wird meist vom Compiler in 4 Bereiche aufgeteilt: Stack, Code, Data und Heap.

5) Eine Speicherabbildung ist eine Abbildung des Adressraums auf den Speicher (Arbeitsspeicher, Hauptspeicher, RAM, physikalischer Adressraum).


Varianten der Speicherabbildung


1) Mit der vollständigen oder unvollständigen Belegung.
Eine vollständige (komplette) Belegung findet statt, wenn das gesamte Programm in den Speicher geladen wird.

2) Mit der kontinuierlichen oder diskontinuierlichen Belegung.
Eine kontinuierliche Belegung findet statt, wenn verschiedene Teile des Programms zusammenhängend im Speicher platziert werden.

3) Mit oder ohne Auslagerung.
Eine Auslagerung ist eine regelmäßige Speicherung des Programms vom Hauptspeicher in Sekundärspeicher, z.B. auf die Festplatte und zurück.

⇒ Demo 1


Überblick


 (image: https://ife.erdaxo.de/uploads/BSys07Speicherverwaltung/BSys35.gif)

1) Realer Speicher: Ein Prozess kann nur dann laufen, wenn sich sein Adressraum vollständig im Speicher befindet.

2) Virtueller Speicher: Ein Prozess kann auch dann laufen, wenn sich nur ein Teil seines Adressraums im Speicher befindet.


7.2. Realer Speicher


Systeme ohne Speicherabstraktion


Im Hauptspeicher steht das Betriebssystem und ein einziges Anwenderprogramm.

Besonderheiten:

1) Logische und physische Adressen sind gleich.

2) Physische Adressen können zur Übersetzungszeit schon bekannt sein.

3) Es gibt keinen Speicherschutz. Ein Fehler im Anwendungsprogramm kann das Betriebssystem aushebeln, wenn es sich nicht im ROM befindet.

4) Diese Technik ist für Monoprogrammierung (Singletasking, Einprogrammbetrieb) geeignet und wird heute höchstens in einfachen eingebetteten Systemen verwendet. Frühes Beispiel: MS-DOS.


Variable Partitionierung


Definition:

Variable Partitionierung (Partitionierung variabler Größe) ist eine dynamische Aufteilung des Speichers in eine variable Anzahl von Bereichen variabler Größe.

Sachverhalt:

1) Speichersystem bedient die beliebige Reihenfolge von Reservierungen und Freigaben.

2) Reservierungen fordern Bereiche mit verschiedenen Größen.

3) Im Laufe der Zeit wird der Speicher in verschiedene belegte und freie Bereiche (Lücke) geteilt.

4) Wenn eine gefundene Lücke größer als benötigt ist, wird der Rest als neue Lücke markiert.

5) Wenn die passende Lücke nicht gefunden wird, wird die Reservierung abgelehnt.

6) Wenn zwei benachbarte Lücken frei sind, werden diese zu einer Lücke verschmolzen. Eine Verschmelzung wird als Rekombination bezeichnet.

 (image: https://ife.erdaxo.de/uploads/BSys07Speicherverwaltung/BSys36.gif)

Legende: P1, P2, P3, P4 – Prozesse.

Zeitpunkte:
  1. Drei Prozesse am Laufen.
  1. Prozess P1 endet. Freigabe. Lücke entsteht.
  1. Prozess P4 kommt. Reservierung. Neue Lücke entsteht.
  1. Prozess P2 endet. Rekombination von zwei Lücken


Dynamische Relokation


Bei der Partitionierung wird die Anfangsadresse eines Programms erst zur Ladezeit bekannt. Damit wird auch die Adresstransformation erst zur Ladezeit möglich.

Dynamische Relokation ist eine Technik für die Speicherabbildung zur Laufzeit:

1) Der Adressraum jedes Prozesses wird komplett in den Speicher geladen.

2) Die Adresstransformation findet bei jedem Speicherzugriff statt. Zu der logischen Adresse wird der Inhalt eines Basisregisters (oder Relokationsregisters) addiert. Das Basisregister enthält die physikalische Partitionsstartadresse.
Das Programm kann auch zur Laufzeit mit logischenAdressen arbeiten.

3) Für die korrekte Speicherabbildung ist der Zugriffsschutz notwendig. Bei jedem Speicherzugriff wird überprüft, ob die Adresse
innerhalb des Adressraums liegt. Dazu dient ein Grenzregister (Schutz-Register, Limitregister), das die Größe des Adressraums enthält.

4) Beim Prozesswechsel werden beide Register umgesetzt.

Bemerkungen:

1) Dynamische Relokation bietet eine Abstraktion vom physischen Speicher. Die Speicherverwaltung ist für den Programmierer transparent.

2) Der Grad der Multiprogrammierung wird von der Speichergröße abhängig.

3) Eine frühere Lösung war die statische Relokation. Dabei werden alle Adressen im Programm reloziert, wenn das Programm in den Speicher geladen wird.

 (image: https://ife.erdaxo.de/uploads/BSys07Speicherverwaltung/BSys37.gif)


Swapping


Grungidee: Wenn ein Prozess im Moment keine Rechenzeit benötigt, dann wird sein Adressraum komplett in Sekundärspeicher ausgelagert.

Verwendung:

1) Diese Technik wurde in Systemen ohne Speicherabstraktion verwendet, um mehrere Programme gleichzeitig auszuführen.

2) Swapping lässt sich mit variabler Partitionierung kombinieren:
  1. Bei Speichermangel werden Prozesse ausgelagert.
  1. Die freigewordenen Speicherbereiche werden für neue oder für ausgelagerte Prozesse genutzt.
  1. Die Gesamtzahl der gestarteten Prozesse entspricht nämlich der Summe der ausgelagerten und nicht ausgelagerten Prozesse.
  1. Swapping wurde bei älteren Unix-Systemen eingesetzt.


7.3.Freispeicherverwaltung


Grundidee


Das Ziel der Verwaltung des freien Speichers (dynamische Speicherbereitstellung) ist die effiziente Nutzung des realen Speichers. Dabei sollen die Zeit der Speicherzuteilung und die Fragmentierung minimiert werden.

Eine externe Fragmentierung (Zerstückelung, Verschnitt, Zersplitterung) ist ein Speicherzustand mit den schlecht nutzbaren Lücken. Im Laufe der Zeit entstehen überall im Speicher freie Bereiche, die teilweise zu klein sind, um Adressräume hineinladen zu können. Dabei kann eine neue Reservierung nicht erfüllt werden, obwohl insgesamt genügend Speicher frei ist.

Eine interne Fragmentierung ist der ungenutzte Teil des zugeteilten Speicherbereiches.


Einige Techniken


1) Speicherverdichtung (Kompaktierung, Verschiebung) ist eine Technik, bei der alle belegten Bereiche umkopiert werden, so dass nur eine große Lücke vorhanden ist.
Nachteil: Diese Technik ist zeitfressend und wird normalerweise nicht eingesetzt.

2) Abrundung: Wenn der Rest der Lücke zu klein ist, dann wird ganze Lücke reserviert.
Vorteil: Im Speicher entstehen keine kleine Lücken
Nachteil: Interne Fragmentierung.

3) Speicherbereinigung (Garbage Collection): Freigabe und aufwendige Rekombinationen werden automatisch zu einem späteren Zeitpunkt durchgeführt.
Vorteil: Optimalerweise findet eine Speicherbereinigung immer in Leerlaufphasen statt.


Belegungsstrategien


Belegungsstrategien (Allokations-Algorithmen) sind Algorithmen, die nach einer passenden Lücke im fragmentierten Speicher suchen.

1) Sequentielle Belegungsstrategien, welche eine einzige Liste oder andere Datenstruktur für alle Lücken führen.

2) Strategien mit festen Größenklassen (separierten Freilisten), welche mehrere Listen für verschiedene Lückengrößen führen.


Sequentielle Belegungsstrategien


Name Die Suche beginnt Gesuchte Lücke Erzeugte Lücken
First Fit/ Last Fit am Speicheranfang erste/ letzte Kleine Lücken entsteh- en am Anfang/am Ende des Speichers
Next Fit am letzten allokierten Bereich. erste Kleine Lücken sind gleichmäßig überall.
Best Fit/ Worst Fit am Speicheranfang kleinste/ größte Tendiert zum Erzeugen kleiner/großer Lücken


Vorteile: Es gibt keine innere Fragmentierung.
Nachteile:
  1. Wesentliche externe Fragmentierung.
  1. Sequentielle Algorithmen sind langsam, besonders Best Fit und Worst Fit.



















CategoryBSys
Diese Seite wurde noch nicht kommentiert.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki