Kurseinheit 2 Flashcards
Ein Prozess braucht Speicherplatz im Hauptspeicher. Welche Zuweisungsverfahren gibt es( ein zusammenhängendes Stück, mehrere zusammenhängende Segmente, Buddy, Paging)?
Genau, die verschiedenen Zuweisungsverfahren für Speicherplatz im Hauptspeicher sind:
- Zusammenhängende Hauptspeicherzuweisung: Jeder Prozess erhält einen zusammenhängenden Speicherbereich, der mindestens so groß ist wie der benötigte Speicherplatz. Dies kann zu Fragmentierung führen, sowohl intern (unbenutzter Speicher innerhalb eines zugewiesenen Bereichs) als auch extern (unbenutzter Speicher zwischen den zugewiesenen Bereichen).
- Segmentierung: Hierbei wird der Hauptspeicher in mehrere zusammenhängende Segmente unterteilt, die unterschiedlich lange Adressbereiche haben. Ein Prozess erhält mehrere Segmente, die verschiedenen Teilen des Programms zugeordnet werden. Dies kann die interne Fragmentierung minimieren.
- Paging: Der Hauptspeicher wird in feste Blöcke gleicher Größe (Pages) aufgeteilt. Ein Prozess erhält eine bestimmte Anzahl von Pages, die nicht unbedingt zusammenhängend sein müssen. Die virtuellen Adressen eines Prozesses werden in Pages umgerechnet, die im Hauptspeicher verteilt sind. Dadurch können Seiten effizienter genutzt und Fragmentierung verringert werden.
- Buddy-System: Der Hauptspeicher wird in Blöcke unterteilt, die eine Zweierpotenz als Größe haben (z.B. 2^1, 2^2, 2^3). Wenn ein Prozess Speicherplatz benötigt, wird ihm der nächstgrößere verfügbare Block zugewiesen. Falls der Block größer ist als benötigt, wird er in kleinere Blöcke aufgeteilt (Buddies), um Verschwendung zu minimieren.
Diese verschiedenen Verfahren haben unterschiedliche Vor- und Nachteile in Bezug auf Effizienz, Fragmentierung und Implementierungskomplexität, weshalb je nach Anwendungszweck das geeignete Verfahren ausgewählt wird.
Welche Verfahren verursachen interne und (oder) externe Fragementierung?
-
Zusammenhängende Hauptspeicherzuweisung:
- Interne Fragmentierung: Ja, da Prozessen oft Speicher zugewiesen wird, der größer ist als ihr tatsächlicher Bedarf, was zu ungenutztem Speicherplatz führt.
-
Segmentierung:
- Interne Fragmentierung: Ja, da Segmente oft größer sein können als der tatsächliche Speicherbedarf eines Prozesses.
- Externe Fragmentierung: Ja, da aufgrund der unterschiedlichen Segmentgrößen Lücken im Hauptspeicher entstehen können, die nicht groß genug sind, um einem Prozess zugewiesen zu werden.
-
Paging:
- Interne Fragmentierung: Ja, wenn einem Prozess mehr Seiten zugewiesen werden, als er tatsächlich benötigt, was zu ungenutztem Speicherplatz innerhalb der Seiten führt.
- Externe Fragmentierung: Nein, da Pages feste Größen haben und immer in ganze Pages zugewiesen werden.
-
Buddy-System:
- Interne Fragmentierung: Ja, da Prozessen oft Speicherplatz zugewiesen wird, der größer ist als ihr tatsächlicher Bedarf, um die Potenz von 2 zu erfüllen, was zu ungenutztem Speicherplatz führt.
- Externe Fragmentierung: Nein, da immer Blocks mit Potenzen von 2 Größen zugewiesen werden.
Die Wahl des richtigen Verfahrens hängt von verschiedenen Faktoren ab, einschließlich des Anwendungsfalls, der Effizienz und der Implementierungskomplexität.
Was bedeutet die interne und die externe Fragementierung?
-
Interne Fragmentierung:
- Diese Art von Fragmentierung tritt auf, wenn einem Prozess mehr Speicherplatz zugewiesen wird, als er tatsächlich benötigt.
- Dadurch entsteht ungenutzter Speicherplatz im zugewiesenen Bereich.
- Dies kann dazu führen, dass wertvoller Hauptspeicher verschwendet wird.
- Interne Fragmentierung kann auftreten, wenn die Speicherzuweisung in großen Einheiten erfolgt, und der Speicherplatz nicht perfekt auf den Prozessbedarf abgestimmt ist.
- Beispiele sind die zusammenhängende Hauptspeicherzuweisung und die Segmentierung.
-
Externe Fragmentierung:
- Diese Art von Fragmentierung tritt auf, wenn ausreichend Speicherplatz im Hauptspeicher vorhanden ist, aber dieser Speicherplatz in viele kleine, nicht zusammenhängende Bereiche aufgeteilt ist.
- Dadurch kann es schwierig sein, einem Prozess einen ausreichend großen, zusammenhängenden Speicherbereich zuzuweisen, selbst wenn genug freier Speicher insgesamt vorhanden ist.
- Externe Fragmentierung kann die Effizienz der Speichernutzung beeinträchtigen, da sie dazu führen kann, dass Prozesse nicht gestartet oder fortgesetzt werden können, obwohl ausreichend freier Speicher vorhanden ist.
- Beispiele sind die zusammenhängende Hauptspeicherzuweisung und die Segmentierung.
Die Bekämpfung von Fragmentierung ist wichtig, um die effiziente Nutzung des Hauptspeichers sicherzustellen. Verschiedene Speicherzuweisungsverfahren wurden entwickelt, um diese Probleme zu minimieren.
Wie könnte man mit dem Problem der internen und externen Fragementierung umgehen?
Es gibt verschiedene Möglichkeiten, um mit dem Problem der internen und externen Fragmentierung umzugehen:
- Interne Fragmentierung kann reduziert werden, indem man jedem Prozess nur so viel Speicherplatz zuweist, wie er tatsächlich benötigt. Bei der zusammenhängenden Hauptspeicherzuweisung kann dies durch die Verwendung von dynamischer Speicherzuweisung erreicht werden, bei der der Speicherplatz bei Bedarf zugewiesen und freigegeben wird. Bei der Segmentierung kann dies durch die Verwendung von variabler Segmentgröße erreicht werden, bei der die Größe der Segmente an den tatsächlichen Bedarf angepasst wird.
- Externe Fragmentierung kann reduziert werden, indem man den Hauptspeicher in kleinere Blöcke aufteilt, um die Wahrscheinlichkeit zu erhöhen, dass ein zusammenhängender Bereich gefunden werden kann. Dies kann durch die Verwendung von Paging erreicht werden, bei der der Hauptspeicher in kleine Seiten gleicher Größe aufgeteilt wird.
- Eine weitere Möglichkeit zur Reduzierung der externen Fragmentierung besteht darin, den Hauptspeicher von Zeit zu Zeit zu kompaktieren, indem die im Hauptspeicher eingelagerten Prozesse zusammengeführt werden, um aus vielen kleinen Lücken eine große zu machen. Dies ist jedoch mit einem hohen Aufwand verbunden .
- Eine weitere Möglichkeit besteht darin, die Speichervergabe flexibler zu gestalten, indem man die Anforderung aufgibt, dass jeder Prozess einen zusammenhängenden Bereich im Hauptspeicher erhalten soll. Dies kann durch die Verwendung von Paging erreicht werden, bei der jeder Prozess nur so viele Seiten zugewiesen bekommt, wie er tatsächlich benötigt, unabhängig davon, ob sie zusammenhängend sind oder nicht .
Ein Prozess braucht nur logische Adressen statt physische Adressen zu kennen, d.h. ein Prozess arbeitet nur mit logischen Adressen, die physischen Adressen werden erst zu dem Zugriffszeitpunkt auf den Hauptspeicher umgerechnet, warum ist das vorteilhaft (Unabhängigkeit zwischen Programmen und Rechnern, Relokierbarkeit)?
Die Verwendung von logischen Adressen bietet mehrere Vorteile:
- Unabhängigkeit zwischen Programmen und Rechnern: Da ein Prozess nur mit logischen Adressen arbeitet, ist er unabhängig von der tatsächlichen physischen Speicherplatzbelegung im Hauptspeicher. Dies bedeutet, dass ein Programm auf verschiedenen Rechnern ausgeführt werden kann, ohne dass es an die physische Speicherplatzbelegung angepasst werden muss.
- Relokierbarkeit: Da ein Prozess nur mit logischen Adressen arbeitet, kann er an verschiedenen Stellen im Hauptspeicher platziert werden, ohne dass das Programm selbst geändert werden muss. Dies ermöglicht es dem Betriebssystem, den Hauptspeicher effizienter zu nutzen, indem es den Speicherplatz zwischen verschiedenen Prozessen teilt.
- Größere logische Adressräume: Da ein Prozess nur mit logischen Adressen arbeitet, kann er einen größeren logischen Adressraum verwenden, als tatsächlich im Hauptspeicher vorhanden ist. Dies ermöglicht es einem Programm, mehr Speicherplatz zu verwenden, als tatsächlich im Hauptspeicher vorhanden ist, indem es die nicht benötigten Teile des logischen Adressraums auf den Sekundärspeicher auslagert .
Die Umrechnung von logischen Adressen in physische Adressen erfolgt erst zum Zugriffszeitpunkt auf den Hauptspeicher, um die oben genannten Vorteile zu nutzen und die Flexibilität der Speicherverwaltung zu erhöhen .
Wie wird eine logische Adresse auf die physische Adresse abgebildet (bei zusammenhängender Zuweisung und Paging)?
- Zusammenhängende Hauptspeicherzuweisung:
- Direkte Abbildung durch Addition der Basisadresse des Prozesses zur logischen Adresse.
- Physische Adresse = Basisadresse + Offset.
- Paging:
- Aufteilung der logischen Adresse in Seitennummer und Offset.
- Abbildung der Seitennummer auf physische Rahmennummer.
- Physische Adresse = Basisadresse des Rahmens + Offset.
Die Abbildung wird vom Betriebssystem durchgeführt, um Speicherzugriffe zu steuern und die Flexibilität der Speicherverwaltung zu gewährleisten.
Welche Hardware wird bei der Umrechnung gebraucht (Basis- und Grenzregister bei der zusammenhängenden Zuweisung, Seitentabelle bei Paging, Mit Hilfe von Hardware)?
- Zusammenhängende Hauptspeicherzuweisung:
- Verwendung von Basis- und Grenzregistern.
- Basisregister enthält Basisadresse des Prozesses.
- Grenzregister gibt Größe des zugewiesenen Speicherbereichs an.
- Umrechnung durch Addition der logischen Adresse und Basisregister.
- Überprüfung, ob physische Adresse im zugewiesenen Bereich liegt.
- Paging:
- Verwendung einer Seitentabelle.
- Jede Seite des Prozesses hat Eintrag in der Tabelle.
- Eintrag enthält physische Rahmennummer und Steuerbits.
- Umrechnung durch Zugriff auf Eintrag mit Seitennummer.
- Physische Rahmennummer und Offset kombiniert für physische Adresse.
- Hardwareunterstützung:
- Einsatz von Memory Management Unit (MMU).
- MMU zwischen CPU und Hauptspeicher.
- Echtzeit-Umrechnung von logischen zu physischen Adressen.
- MMU verwendet Basisadresse oder Seitentabelle je nach Verfahren.
Was ist Paging?
Natürlich, hier ist die Antwort in der vereinbarten Bulletpoint-Struktur:
- Paging ist eine Speicherverwaltungstechnik für virtuellen Speicher.
- Logischer Adressraum wird in gleich große Seiten aufgeteilt, physischer Speicher in Rahmen.
- Seitentabelle verknüpft logische und physische Adressen für jede Seite.
- Beim Zugriff: Seitennummer bestimmt Eintrag in Seitentabelle.
- Physische Rahmennummer und Offset ergeben physische Adresse.
- Fehlende Seite wird aus Sekundärspeicher in freien Rahmen geladen.
- Vorteile von Paging:
- Größerer logischer Adressraum als physischer Speicher.
- Effiziente Speicherverwaltung durch gemeinsame Nutzung des Hauptspeichers zwischen Prozessen.
Wie funktioniert paging?
- Paging teilt logischen Adressraum in gleich große Seiten, physischen Speicher in Rahmen.
- Seitentabelle verknüpft logische und physische Adressen für jede Seite.
- Beim Zugriff: Seitennummer bestimmt Eintrag, physische Rahmennummer, Offset ergeben Adresse.
- Fehlende Seite wird aus Sekundärspeicher in freien Rahmen im Hauptspeicher geladen.
- Bei vollem Hauptspeicher: Seitenersetzungsalgorithmus wählt zu entfernende Seiten.
- Vorteile von Paging:
- Größerer logischer Adressraum als physischer Speicher.
- Effiziente Speicherverwaltung durch gemeinsame Nutzung des Hauptspeichers zwischen Prozessen.
Wie werden der physische Adressraum und der logische Adressraum aufgeteilt?
- Zusammenhängende Hauptspeicherzuweisung:
- Physischer Adressraum: In zusammenhängende Speicherbereiche aufgeteilt.
- Jeder Prozess bekommt einen zusammenhängenden Speicherbereich.
- Basis- und Grenzregister definieren den Bereich.
- Paging:
- Logischer Adressraum: In gleich große Seiten aufgeteilt.
- Physischer Speicher: In gleich große Rahmen aufgeteilt.
- Jede Seite passt in einen Rahmen.
- Seitentabelle:
- Verknüpft logische und physische Adressen.
- Eintrag pro Seite, enthält Rahmennummer und Steuerbits.
- Hardwarekomponenten:
- Basis- und Grenzregister oder Seitentabelle.
- Betriebssystem verwaltet die Umrechnung.
Wie wird eine logische Adresse auf eine physische Adresse abgebildet?
Natürlich, hier ist die Antwort in der vereinbarten Bulletpoint-Struktur:
- Zusammenhängende Hauptspeicherzuweisung:
- Basis- und Grenzregister verwenden.
- Basisregister: Startadresse des Speicherbereichs.
- Grenzregister: Größe des Speicherbereichs.
- Physische Adresse ergibt sich aus Basisadresse + Offset.
- Relative Adressierung zum Basis-Register.
- Paging:
- Verwendung einer Seitentabelle.
- Jede Seite hat einen Eintrag in der Tabelle.
- Eintrag enthält Rahmennummer und Steuerbits.
- Seitennummer aus logischer Adresse identifiziert Eintrag.
- Physische Rahmennummer aus Eintrag abrufen.
- Physische Adresse = Basisadresse des Rahmens + Offset der logischen Adresse.
- Memory Management Unit (MMU):
- Hardwarekomponente für Adressumrechnung.
- Wandelt logische Adresse in physische Adresse um.
- Unterstützt Paging und andere Techniken.
Wie macht ein Mensch und wie macht der Rechner bei der Umrechnung der logischen Adresse in die physische?
Menschliche Methode:
- Ein Mensch würde normalerweise nicht manuell logische Adressen in physische umrechnen.
- Verlässt sich auf Betriebssystem und Computerhardware.
- Vermeidet zeitaufwändige und fehleranfällige manuelle Umrechnung.
Rechnermethode - Zusammenhängende Hauptspeicherzuweisung:
- Verwendung von Basis- und Grenzregistern.
- Basisregister: Startadresse des Speicherbereichs.
- Grenzregister: Größe des Speicherbereichs.
- Physische Adresse = Basisadresse + Offset.
- Relativer Ansatz zur Basisadresse.
Rechnermethode - Paging:
- Verwendung einer Seitentabelle.
- Eintrag pro Seite, enthält Rahmennummer und Steuerbits.
- Seitennummer identifiziert Eintrag in der Seitentabelle.
- Physische Rahmennummer aus Eintrag abrufen.
- Physische Adresse = Basisadresse des Rahmens + Offset.
Gemeinsamer Faktor:
- Hardwarekomponenten wie Basis- und Grenzregister oder Seitentabelle.
- Betriebssystemverwaltung der Umrechnung von logischen zu physischen Adressen.
Was sind die Vorteile von Paging (Seiten gemeinsam benutzen: shared memory, ohne externe Fragementierung, einfache Verwaltung des Hauptspeichers, Realisierung vom virtuellen Hauptspeicher)?
Vorteile von Paging:
- Shared Memory: Mehrere Prozesse können denselben physischen Speicherbereich gemeinsam nutzen, was den Datenaustausch und die Verwendung gemeinsam genutzter Bibliotheken ermöglicht.
- Keine externe Fragmentierung: Paging vermeidet externe Fragmentierung, da jeder Prozess nur so viele Seiten wie nötig erhält, wodurch der Hauptspeicher effizienter genutzt wird.
- Einfache Hauptspeicherverwaltung: Die Zuweisung von Seiten erleichtert die Hauptspeicherverwaltung, da jeder Prozess nur die benötigte Anzahl an Seiten erhält, was effizienten Ressourceneinsatz ermöglicht.
- Realisierung virtueller Hauptspeicher: Paging ermöglicht einen virtuellen Hauptspeicher größer als der physische. Das Betriebssystem kann Seiten auf die Festplatte auslagern und bei Bedarf wieder laden, um trotz begrenztem Speicher mehr Prozesse auszuführen.
Paging optimiert die Hauptspeicherverwaltung und Ressourcennutzung im System.
Wie viele Zugriffe auf den Hauptspeicher werden bei Paging mindestens benötigt, wenn ein Wort gebraucht wird?
- Mindestens zwei Zugriffe: Bei der Verwendung von Paging sind mindestens zwei Zugriffe auf den Hauptspeicher notwendig, um ein Wort zu lesen oder zu schreiben.
- Suchen in der Seitentabelle: Zuerst muss die Seitentabelle des Prozesses durchsucht werden, um die physische Rahmennummer der gesuchten Seite zu finden. Dies erfordert einen Hauptspeicherzugriff.
- Lesen oder Schreiben: Nachdem die Rahmennummer gefunden wurde, kann das Wort aus dem Hauptspeicher gelesen oder geschrieben werden, was einen weiteren Hauptspeicherzugriff erfordert.
Insgesamt werden also mindestens zwei Hauptspeicherzugriffe benötigt, um ein Wort zu verarbeiten, wenn Paging verwendet wird.
Welche Probleme können entstehen, wenn man eine Seite zu groß oder zu klein wählt(größere interne Fragementierung bei der größeren Seite, lange Seitentabelle bei der kleineren Seite)?
- Mindestens zwei Zugriffe: Bei der Verwendung von Paging sind mindestens zwei Zugriffe auf den Hauptspeicher notwendig, um ein Wort zu lesen oder zu schreiben.
- Suchen in der Seitentabelle: Zuerst muss die Seitentabelle des Prozesses durchsucht werden, um die physische Rahmennummer der gesuchten Seite zu finden. Dies erfordert einen Hauptspeicherzugriff.
- Lesen oder Schreiben: Nachdem die Rahmennummer gefunden wurde, kann das Wort aus dem Hauptspeicher gelesen oder geschrieben werden, was einen weiteren Hauptspeicherzugriff erfordert.
Insgesamt werden also mindestens zwei Hauptspeicherzugriffe benötigt, um ein Wort zu verarbeiten, wenn Paging verwendet wird.
Was ist der Ansatz vom virtuellen Speicher(Unabhängigkeit der Programmen und Rechner, Programme zu schreiben, ohne Wissen von der Größe des Hauptspeichers, nur die Seiten im Hauptspeicher zu halten, die gerade gebraucht werden, der Rest bleibt im Sekundärspeicher)?
- Trennung von logischem und physischem Speicher: Der Ansatz des virtuellen Speichers trennt den logischen Speicherbereich eines Prozesses vom tatsächlich verfügbaren Hauptspeicher.
- Aufteilung in Seiten: Der logische Speicher wird in Seiten aufgeteilt, die in den Hauptspeicher geladen werden können.
- Bedarfsgerechtes Laden: Nur benötigte Seiten werden in den Hauptspeicher geladen, während der Rest auf der Festplatte verbleibt.
- Unabhängigkeit von Hauptspeichergröße: Programme können unabhängig von der Hauptspeichergröße geschrieben werden, da der virtuelle Speicher größer sein kann als der physische Speicher.
- Effiziente Ressourcennutzung: Mehrere Prozesse können trotz begrenztem Hauptspeicher parallel laufen, indem nicht benötigte Seiten ausgelagert werden.
- Optimale Ressourcennutzung: Der Ansatz des virtuellen Speichers ermöglicht eine effiziente Nutzung des verfügbaren Hauptspeichers und der Systemressourcen.
Welche Vorteile und Nachteile hat der Ansatz vom virtuellen Speicher?
Vorteile des Ansatzes vom virtuellen Speicher:
- Unabhängigkeit von der Größe des Hauptspeichers: Programme können unabhängig von der Hauptspeichergröße geschrieben werden, da der virtuelle Speicher größer sein kann als der physische Speicher.
- Effiziente Ressourcennutzung: Mehrere Prozesse können trotz begrenztem Hauptspeicher parallel laufen, indem nicht benötigte Seiten ausgelagert werden.
- Schutz der Prozesse: Jeder Prozess hat seinen eigenen isolierten logischen Adressraum, der verhindert, dass Prozesse auf den Speicherbereich anderer Prozesse zugreifen können.
Nachteile des Ansatzes vom virtuellen Speicher:
- Overhead: Die Verwaltung des virtuellen Speichers erfordert zusätzliche Ressourcen und erhöht den Verwaltungsaufwand für das Betriebssystem.
- Langsamere Ausführung: Das Laden von Seiten von der Festplatte in den Hauptspeicher kann die Ausführung von Prozessen verlangsamen, insbesondere wenn Seiten häufig nachgeladen werden müssen.
- Fragmentierung: Die Verwendung von virtuellem Speicher kann zu Fragmentierung führen, da Seiten nicht zusammenhängend im Hauptspeicher liegen müssen.
Insgesamt überwiegen die Vorteile des virtuellen Speichers in den meisten Fällen die Nachteile und ermöglichen eine effiziente Nutzung des verfügbaren Hauptspeichers und der Systemressourcen.
Für die Realisierung des virtuellen Hauptspeichers muss man die folgenden Probleme lösen: a). wann eine Seite in den Hauptspeicher geholt werden soll. Demand paging ist eine Möglichkeit. Was ist demand paging?
b). welche Seite ausgelagert werden soll, wenn der Hauptspeicher voll ist. Nach welchen Kriterien könnte man die auszulagernde Seite auswählen?
Für die Realisierung des virtuellen Hauptspeichers muss man die folgende
Demand Paging:
- Demand Paging ist eine Technik bei der Verwendung von virtuellem Speicher.
- Seiten werden nur in den Hauptspeicher geladen, wenn sie benötigt werden.
- Ein Zugriff auf eine Seite, die nicht im Hauptspeicher ist, löst einen Seitenfehler aus.
- Das Betriebssystem lädt die fehlende Seite von der Festplatte in den Hauptspeicher und setzt den Prozess fort.
- Effiziente Nutzung des Hauptspeichers, da nur benötigte Seiten im Speicher gehalten werden.
- Häufig in modernen Betriebssystemen verwendet, um virtuellen Speicher zu verwalten.
Für die Realisierung des virtuellen Hauptspeichers muss man die folgenden Probleme lösen: a). wann eine Seite in den Hauptspeicher geholt werden soll. Demand paging ist eine Möglichkeit. Was ist demand paging?
b). welche Seite ausgelagert werden soll, wenn der Hauptspeicher voll ist. Nach welchen Kriterien könnte man die auszulagernde Seite auswählen?
Auswahl der auszulagernden Seite:
- Wenn der Hauptspeicher voll ist und Platz für eine neue Seite geschaffen werden muss, muss eine vorhandene Seite ausgelagert werden.
- Die Auswahl erfolgt anhand bestimmter Kriterien, um die Systemleistung zu optimieren.
- Gängige Auswahlkriterien sind:
1. Least Recently Used (LRU): Die am längsten nicht verwendete Seite wird ausgelagert, da sie wahrscheinlich auch in Zukunft nicht benötigt wird.
2. First-In-First-Out (FIFO): Die zuerst geladene Seite wird ausgelagert, basierend auf der Annahme, dass ältere Seiten weniger wichtig sind.
3. Random: Eine zufällige Seite wird ausgewählt, was einfach, aber möglicherweise nicht optimal ist.
4. Not Recently Used (NRU): Seiten werden in Kategorien basierend auf ihrem Zugriffsstatus unterteilt, und die am wenigsten wahrscheinlich benötigte Kategorie wird ausgelagert.
- Die Wahl der Methode hängt von Faktoren wie Systemarchitektur, Hauptspeichergröße und Anwendungsart ab.
Was passiert, wenn eine Seite nicht im Hauptspeicher vorhanden ist?
Was passiert, wenn eine Seite nicht im Hauptspeicher vorhanden ist?
- Wenn eine Seite nicht im Hauptspeicher vorhanden ist, tritt ein Seitenfehler (Page Fault) auf.
- Die Memory Management Unit (MMU) sucht in der Seitentabelle nach der Seitenrahmennummer, um festzustellen, ob die Seite im Hauptspeicher liegt.
- Wenn die Seite nicht im Hauptspeicher vorhanden ist, löst die MMU eine Software-Unterbrechung (Trap) aus, da die angeforderte Seite momentan nicht verfügbar ist.
- Das Betriebssystem wird benachrichtigt und interveniert.
- Das Betriebssystem liest die fehlende Seite von der Festplatte in den Hauptspeicher und aktualisiert die Seitentabelle.
- Nach dem Laden der Seite setzt das Betriebssystem den Prozess fort, der auf die Seite zugegriffen hat.
- Diese Technik wird als Demand Paging bezeichnet, bei der Seiten erst in den Hauptspeicher geladen werden, wenn sie tatsächlich benötigt werden.
Was ist ein Seitenfehler?
- Ein Seitenfehler tritt auf, wenn ein Prozess auf eine Seite im Hauptspeicher zugreifen möchte, die sich tatsächlich im Sekundärspeicher befindet.
- Bei einem Seitenfehler sind einige Seiten eines laufenden Prozesses nicht im Hauptspeicher vorhanden, sondern im Sekundärspeicher.
- Das Betriebssystem verfolgt die Position der fehlenden Seiten im Sekundärspeicher mithilfe einer Seitentabelle.
- Ein Zugriff auf eine Seite, die nicht im Hauptspeicher liegt, führt zu einem Seitenfehler, da die Seite zuerst aus dem Sekundärspeicher geladen werden muss.
Seitenfehler ist eine Unterbrechung, wie wird ein Seitenfehler behandelt?
- Bei einem Seitenfehler handelt es sich um eine Unterbrechung im Ablauf eines Programms.
- Ein Seitenfehler wird behandelt, indem die Memory Management Unit (MMU) eine Software-Unterbrechung (Trap) auslöst, um auf den fehlenden Zugriff auf eine Seite hinzuweisen.
- Die fehlende Seite wird vom Betriebssystem von der Festplatte in den Hauptspeicher geladen.
- Nachdem die fehlende Seite im Hauptspeicher ist, wird der unterbrochene Prozess fortgesetzt, um die Berechnungen fortzusetzen.
- Diese Technik wird als “demand paging” bezeichnet, bei der Seiten nur dann vom Sekundärspeicher in den Hauptspeicher geladen werden, wenn sie tatsächlich benötigt werden.
Welche Aktionen gibt es, um die fehlende Seite in den Hauptspeicher zu holen?
- Seitenersetzung: Wenn der Hauptspeicher voll ist, müssen möglicherweise andere Seiten entfernt werden, um Platz für die neue Seite zu schaffen.
- Festplattenzugriff: Die fehlende Seite wird von der Festplatte in den Hauptspeicher gelesen.
- Seitentabelle aktualisieren: Die Information über die neue Position der Seite im Hauptspeicher wird in der Seitentabelle aktualisiert.
- Fortsetzung des Prozesses: Nachdem die Seite im Hauptspeicher ist, kann der Prozess seine Berechnungen fortsetzen.
Wie erkennt die CPU, dass eine Seite nicht im Hauptspeicher liegt?
- Prüfen der Seitentabelle: Die CPU überprüft die Seitentabelle, um festzustellen, ob die Seitenrahmennummer für die gesuchte Seite vorhanden ist.
- Überprüfen des present-Bits: Die CPU überprüft das “present”-Bit im Seitentabelleneintrag. Wenn dieses Bit auf 0 gesetzt ist, bedeutet es, dass die Seite nicht im Hauptspeicher liegt.
- Software-Unterbrechung (Trap): Wenn das “present”-Bit auf 0 steht, löst die Memory Management Unit (MMU) eine Software-Unterbrechung (Trap) aus, um auf den fehlenden Zugriff auf die Seite hinzuweisen.
- Anfrage an das Betriebssystem: Die Software-Unterbrechung benachrichtigt das Betriebssystem über den Seitenfehler, der dann die erforderlichen Maßnahmen zur Seitenbeschaffung einleiten kann.
Bei Linux wird die Hauptspeicherzuweisungsstrategie Buddy eingesetzt, wie funktioniert sie? Welche Fragementierung hat diese Strategie?
Die Hauptspeicherzuweisungsstrategie Buddy, die bei Linux eingesetzt wird, besteht aus zusammenhängenden Stücken, die jeweils eine Zweierpotenz viele Seiten enthalten. Ein Stück ist entweder belegt oder frei. Wenn der Allokierer einen zusammenhängenden Bereich einer bestimmten Länge benötigt, nimmt er das kleinste freie Stück, das mindestens die erforderliche Länge aufweist. Wenn es mehr als doppelt so lang ist wie der benötigte Bereich, so wird es halbiert; das eine halbe Stück wird benutzt, das andere – sein Buddy – bleibt frei. Wann immer ein Stück frei wird und sein Buddy bereits frei ist, werden sie wieder verschmolzen.
Diese Strategie kann zu erhöhter interner Fragmentierung führen, denn wenn ein Prozess beispielsweise 33 Seiten benötigt, belegt er schon 64.
Warum herrschen Wettkampfbedingungen (Race Conditions) zwischen Prozessen, wenn sie auf die gleiche Variable zugreifen (Parallelität von Prozessen, Scheduling, Scheduler)?
- Fehlende Synchronisation: Wettkampfbedingungen (Race Conditions) zwischen Prozessen entstehen, wenn sie auf eine gemeinsame Variable zugreifen, ohne dass eine geeignete Synchronisation implementiert ist, um die Reihenfolge der Zugriffe zu koordinieren.
- Gleichzeitiger Zugriff: Wenn mehrere Prozesse gleichzeitig auf dieselbe Variable zugreifen und sie ändern, kann es zu inkonsistenten oder unerwarteten Ergebnissen kommen, wenn ihre Änderungen sich gegenseitig beeinflussen.
- Überschreiben von Änderungen: Wenn Prozesse gleichzeitig auf die Variable zugreifen und Änderungen vornehmen, könnten die Änderungen eines Prozesses von den Änderungen eines anderen überschrieben werden.
- Unvorhersehbare Ausführung: Die Geschwindigkeit und Reihenfolge der Prozesse auf verschiedenen Prozessorkernen oder im Scheduling können dazu führen, dass nicht vorhersehbar ist, welcher Prozess zuerst auf die Variable zugreift.
- Scheduling-Rollen: Das Scheduling und der Scheduler bestimmen, welcher Prozess als nächstes ausgeführt wird. Wenn ein Prozess unterbrochen wird, bevor er seine Arbeit an einer kritischen Stelle beendet hat, kann dies zu Problemen führen, wenn ein anderer Prozess auf diese Variable zugreift.
- Notwendige Synchronisation: Um Wettkampfbedingungen zu vermeiden, müssen Prozesse synchronisiert werden, um sicherzustellen, dass der Zugriff auf gemeinsame Variablen ordnungsgemäß koordiniert wird, und um kritische Abschnitte zu schützen, die gleichzeitigen Zugriff erfordern.
Was bedeutet race conditions?
- Race conditions treten auf, wenn mehrere Prozesse oder Threads gleichzeitig auf eine gemeinsame Ressource zugreifen und diese verändern.
- Fehlende Synchronisation führt dazu, dass Änderungen sich gegenseitig überschreiben und verloren gehen können.
- Unterschiedliche Prozessorgeschwindigkeiten und Scheduling führen zu unvorhersehbaren Wettrennen.
- Race conditions können inkonsistente Ergebnisse und Fehler verursachen.
- Sie sind ein häufiges Problem in Mehrprozessorsystemen.
- Synchronisation ist notwendig, um race conditions zu vermeiden.
- Synchronisation gewährleistet, dass nur berechtigte Prozesse oder Threads die Ressource ändern dürfen.