Kurseinheit 2 Flashcards

You may prefer our related Brainscape-certified flashcards:
1
Q

Ein Prozess braucht Speicherplatz im Hauptspeicher. Welche Zuweisungsverfahren gibt es( ein zusammenhängendes Stück, mehrere zusammenhängende Segmente, Buddy, Paging)?

A

Genau, die verschiedenen Zuweisungsverfahren für Speicherplatz im Hauptspeicher sind:

  1. 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).
  2. 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.
  3. 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.
  4. 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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Welche Verfahren verursachen interne und (oder) externe Fragementierung?

A
  1. 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.
  2. 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.
  3. 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.
  4. 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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Was bedeutet die interne und die externe Fragementierung?

A
  1. 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.
  2. 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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Wie könnte man mit dem Problem der internen und externen Fragementierung umgehen?

A

Es gibt verschiedene Möglichkeiten, um mit dem Problem der internen und externen Fragmentierung umzugehen:

  1. 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.
  2. 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.
  3. 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 .
  4. 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 .
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

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)?

A

Die Verwendung von logischen Adressen bietet mehrere Vorteile:

  1. 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.
  2. 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.
  3. 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 .

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Wie wird eine logische Adresse auf die physische Adresse abgebildet (bei zusammenhängender Zuweisung und Paging)?

A
  • 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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Welche Hardware wird bei der Umrechnung gebraucht (Basis- und Grenzregister bei der zusammenhängenden Zuweisung, Seitentabelle bei Paging, Mit Hilfe von Hardware)?

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Was ist Paging?

A

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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Wie funktioniert paging?

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Wie werden der physische Adressraum und der logische Adressraum aufgeteilt?

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Wie wird eine logische Adresse auf eine physische Adresse abgebildet?

A

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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Wie macht ein Mensch und wie macht der Rechner bei der Umrechnung der logischen Adresse in die physische?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Was sind die Vorteile von Paging (Seiten gemeinsam benutzen: shared memory, ohne externe Fragementierung, einfache Verwaltung des Hauptspeichers, Realisierung vom virtuellen Hauptspeicher)?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Wie viele Zugriffe auf den Hauptspeicher werden bei Paging mindestens benötigt, wenn ein Wort gebraucht wird?

A
  • 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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

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)?

A
  • 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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

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)?

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Welche Vorteile und Nachteile hat der Ansatz vom virtuellen Speicher?

A

Vorteile des Ansatzes vom virtuellen Speicher:

  1. 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.
  2. Effiziente Ressourcennutzung: Mehrere Prozesse können trotz begrenztem Hauptspeicher parallel laufen, indem nicht benötigte Seiten ausgelagert werden.
  3. 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:

  1. Overhead: Die Verwaltung des virtuellen Speichers erfordert zusätzliche Ressourcen und erhöht den Verwaltungsaufwand für das Betriebssystem.
  2. 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.
  3. 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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

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

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

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?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Was passiert, wenn eine Seite nicht im Hauptspeicher vorhanden ist?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Was ist ein Seitenfehler?

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Seitenfehler ist eine Unterbrechung, wie wird ein Seitenfehler behandelt?

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Welche Aktionen gibt es, um die fehlende Seite in den Hauptspeicher zu holen?

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Wie erkennt die CPU, dass eine Seite nicht im Hauptspeicher liegt?

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Bei Linux wird die Hauptspeicherzuweisungsstrategie Buddy eingesetzt, wie funktioniert sie? Welche Fragementierung hat diese Strategie?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Warum herrschen Wettkampfbedingungen (Race Conditions) zwischen Prozessen, wenn sie auf die gleiche Variable zugreifen (Parallelität von Prozessen, Scheduling, Scheduler)?

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Was bedeutet race conditions?

A
  • 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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

Was ist ein kritischer Abschnitt?

A
  • Kritischer Abschnitt: Ein Programmabschnitt, in dem mehrere Threads oder Prozesse auf eine gemeinsame Ressource zugreifen und sie verändern.
  • Race Condition: Bei gleichzeitigem Zugriff auf den kritischen Abschnitt können Änderungen sich gegenseitig überschreiben und verloren gehen.
  • Schutz durch Synchronisation: Kritische Abschnitte müssen synchronisiert werden, um unkontrollierten Zugriff zu verhindern.
  • Gemeinsame Ressource: Kritische Abschnitte können auf gemeinsame Variablen oder Datenstrukturen zugreifen.
  • Koordinierter Zugriff: Nur ein Thread oder Prozess sollte zu einem bestimmten Zeitpunkt den kritischen Abschnitt betreten dürfen.
  • Vermeidung von Konflikten: Synchronisation verhindert race conditions und gewährleistet geordneten Zugriff.
29
Q

Warum ist die Prozesssynchronisation wichtig? (Ein Programm muss deterministisch sein, d.h. das Ergebnis darf nicht von der Ausführungsreihenfolge der Prozesse abhängen)

A
  • Determinismus: Prozesssynchronisation gewährleistet, dass ein Programm deterministisch ist, d.h., das Ergebnis bleibt unabhängig von der Ausführungsreihenfolge der Prozesse gleich.
  • Race Conditions vermeiden: Ohne Synchronisation können Ressourcen von mehreren Prozessen gleichzeitig geändert werden, was zu unvorhersehbaren Ergebnissen führen kann.
  • Überschreiben von Änderungen: Race conditions können dazu führen, dass Änderungen sich gegenseitig überschreiben und somit verloren gehen.
  • Unvorhersehbare Ausführung: Die Reihenfolge der Prozesse ist nicht vorhersehbar, was zu variierenden Ergebnissen führen kann, wenn keine Synchronisation vorhanden ist.
  • Gewünschtes Ergebnis: Prozesssynchronisation sorgt dafür, dass Prozesse in einer bestimmten Reihenfolge auf gemeinsame Ressourcen zugreifen, um das erwartete und gewünschte Ergebnis zu erzielen.
  • Vorhersagbarkeit: Mit Prozesssynchronisation wird die Ausführung vorhersehbar und das Ergebnis konsistent, unabhängig von der zugrunde liegenden Ausführungsreihenfolge der Prozesse.
30
Q

Was bedeutet Synchronisierung?

A
  • Koordination: Synchronisierung bedeutet die koordinierte Ausführung von Prozessen oder Threads, um gemeinsam eine Aufgabe zu erfüllen.
  • Gemeinsame Ressourcen: Bei gleichzeitigem Zugriff auf gemeinsame Ressourcen müssen Prozesse oder Threads synchronisiert werden.
  • Berechtigter Zugriff: Synchronisierung stellt sicher, dass nur autorisierte Prozesse oder Threads auf Ressourcen zugreifen und diese verändern.
  • Mechanismen: Semaphore, Mutex und Monitore sind Mechanismen zur Implementierung der Synchronisierung.
  • Reihenfolge: Durch Synchronisierung wird festgelegt, in welcher Reihenfolge Prozesse oder Threads auf die Ressource zugreifen dürfen.
  • Erzielen gewünschter Ergebnisse: Synchronisierung ermöglicht, dass die Prozesse oder Threads die Ressource koordiniert nutzen, um das erwünschte Ergebnis zu erzielen.
  • Vermeidung von Problemen: Synchronisierung ist essenziell, um race conditions und andere Probleme bei der gleichzeitigen Ausführung von Prozessen zu verhindern.
31
Q

Was bedeutet wechselseitiger Ausschluss?

A
  • Eingeschränkter Zugriff: Wechselseitiger Ausschluss bedeutet, dass nur ein Prozess oder Thread zur gleichen Zeit auf eine Ressource zugreifen darf.
  • Vermeidung von Parallelitätsproblemen: Mehrere gleichzeitige Zugriffe könnten zu unvorhersehbaren Ergebnissen führen, daher wird wechselseitiger Ausschluss verwendet.
  • Race Conditions verhindern: Wechselseitiger Ausschluss verhindert, dass Änderungen sich gegenseitig überschreiben und verloren gehen.
  • Synchronisationsmechanismen: Semaphore, Mutex und Monitore dienen zur Implementierung des wechselseitigen Ausschlusses.
  • Berechtigter Zugriff: Nur derjenige Prozess oder Thread, der berechtigt ist, darf auf die Ressource zugreifen.
  • Koordinierte Reihenfolge: Wechselseitiger Ausschluss legt fest, in welcher Reihenfolge Prozesse oder Threads auf die Ressource zugreifen dürfen.
  • Zielgerichtete Ergebnisse: Wechselseitiger Ausschluss gewährleistet, dass die Prozesse oder Threads die Ressource koordiniert nutzen, um das erwünschte Ergebnis zu erzielen.
32
Q

Welche Probleme können entstehen, wenn z.B. die Prozesse Beobachter und Berichterstatter nicht synchronisiert werden?

A
  • Race Conditions: Ohne Synchronisation können Beobachter- und Berichterstatterprozesse gleichzeitig auf gemeinsame Ressourcen zugreifen und Änderungen überschreiben.
  • Inkonsistente Ergebnisse: Die fehlende Synchronisation kann zu inkonsistenten Ergebnissen führen, da Änderungen nicht geordnet sind.
  • Verlorene Ereignisse: Wenn der Berichterstatter den Zähler vorzeitig zurücksetzt, könnten Ereignisse verloren gehen und der Zähler wird nicht korrekt aktualisiert.
  • Variierende Ausführung: Die nicht synchronisierte Ausführungsreihenfolge der Prozesse kann unterschiedliche Ergebnisse erzeugen.
  • Fehlende Koordination: Die Reihenfolge der Prozesse ist unvorhersehbar, daher ist die Synchronisation wichtig, um geordneten Zugriff sicherzustellen.
  • Korrektheit des Programms: Prozesssynchronisation stellt sicher, dass die Prozesse geordnet auf die Ressource zugreifen, um das gewünschte, korrekte Ergebnis zu erzielen.
33
Q

Welche Probleme gibt es, wenn man die Prozesse Beobachter und Berichterstatter mit einer Synchronisationsvariable switch synchronisiert?

A
  • Busy Waiting: Die Verwendung einer Synchronisationsvariable “switch” kann zu “busy waiting” führen, bei dem Prozesse in einer Schleife auf eine Bedingung warten, anstatt auf eine Benachrichtigung zu reagieren.
  • Hohe CPU-Auslastung: Busy waiting führt zu einer hohen Auslastung der CPU, ohne produktive Arbeit zu leisten, was die Systemleistung beeinträchtigen kann.
  • Abwechselndes Warten: Die Verwendung einer einzigen Synchronisationsvariable “switch” kann zu abwechselndem Warten in den kritischen Abschnitten der Prozesse führen.
  • Deadlocks: Abwechselndes Warten kann zu Deadlocks führen, bei denen die Prozesse gegenseitig aufeinander warten und keiner von ihnen vorankommen kann.
  • Effiziente Synchronisation: Semaphore, Mutex oder Monitore bieten effiziente Synchronisationsmechanismen, die verhindern, dass Prozesse unnötig auf Ressourcen warten.
  • Benachrichtigungsbasiertes Warten: Diese Mechanismen ermöglichen es den Prozessen, auf Benachrichtigungen zu warten, anstatt in einer Schleife zu verharren.
  • Bessere Ressourcennutzung: Durch Vermeidung von busy waiting und abwechselndem Warten wird eine effizientere Nutzung der Systemressourcen erreicht.
34
Q

Was passiert, wenn die Variable switch mit 1 initialisiert wird und der Prozess Beobachter eine höhere Priorität beim Scheduling als der Prozess Berichterstatter hat?

A
  • Priority Inversion: Wenn die Variable “switch” mit 1 initialisiert wird und der Beobachter eine höhere Scheduling-Priorität als der Berichterstatter hat, kann es zu “Priority Inversion” kommen.
  • Problematische Situation: Der Beobachter kann den kritischen Abschnitt betreten und “switch” auf 0 setzen, um den Berichterstatter zu blockieren.
  • Höhere Priorität: Wenn ein Prozess mit höherer Priorität als der Beobachter den kritischen Abschnitt betritt, wird der Beobachter blockiert.
  • Verzögerte Ausführung: Der Prozess mit höherer Priorität kann den kritischen Abschnitt betreten und verlassen, bevor der Berichterstatter Zugang bekommt.
  • Prioritätsinversion: Der Beobachter kann den kritischen Abschnitt betreten, obwohl der Berichterstatter noch blockiert ist, was die Ausführung des Berichterstatters verzögert.
  • Vermeidung: Priority Inversion kann durch Anpassung der Prozessprioritäten oder durch den Einsatz von Mechanismen wie “Priority Inheritance” vermieden werden.
  • Optimierte Prioritäten: Die Prioritäten sollten so festgelegt werden, dass solche Probleme minimiert werden und die Ausführung gerecht und effizient erfolgt.
35
Q

Was ist ein Semaphor?

A
  • Konzept von Edsger W. Dijkstra: Ein Semaphor ist ein Konzept, entwickelt von Edsger W. Dijkstra, um Probleme mit gemeinsam genutzten Ressourcen zu lösen.
  • Mehrere Prozesse oder Threads: Semaphoren werden verwendet, wenn mehrere Prozesse oder Threads auf begrenzte Ressourcen zugreifen wollen.
  • Verfügbarkeit von n Stück: Semaphoren können für n freie Speicherplätze, CPUs oder das Betreten von kritischen Abschnitten verwendet werden, wobei n die Anzahl der verfügbaren Ressourcen angibt.
  • Abstrakter Datentyp: Ein Semaphor kann als abstrakter Datentyp definiert werden.
  • Zählvariable und Prozessmenge: Ein Semaphor besteht aus einer Zählvariable “count”, die die Anzahl der freien Ressourcen angibt, und einer Prozessmenge “W”, in der Prozesse warten, bis Ressourcen verfügbar sind.
  • Operationen: Semaphoren haben zwei Operationen: “down” (P) und “up” (V).
  • Operation “down”: Wenn ein Prozess eine Ressource nutzen möchte, ruft er die “down”-Operation auf.
  • Einsatzgebiete: Semaphoren werden verwendet, um kritische Abschnitte zu schützen, Deadlocks zu vermeiden und die Prozesssynchronisation zu gewährleisten.
36
Q

Welche Operationen dürfen auf einem Semaphor ausgeführt werden?

A
  • “down” (P) Operation: Wird aufgerufen, wenn ein Prozess eine Ressource nutzen möchte.
    • Prüfung auf freie Ressourcen: Die “down”-Operation überprüft, ob freie Ressourcen vorhanden sind.
    • Reservierung: Bei Verfügbarkeit wird eine Ressource reserviert, und der Prozess kann fortsetzen.
    • Blockierung: Wenn keine Ressourcen verfügbar sind, wird der Prozess in die Warteschlange “W” aufgenommen und blockiert.
  • “up” (V) Operation: Wird aufgerufen, wenn ein Prozess eine Ressource freigibt.
    • Erhöhung der verfügbaren Ressourcen: Die “up”-Operation erhöht die Anzahl der verfügbaren Ressourcen.
    • Wecken von wartenden Prozessen: Wenn es wartende Prozesse in der Warteschlange “W” gibt, wird einer davon geweckt und kann fortsetzen.

Diese Operationen ermöglichen die Kontrolle über den Zugriff auf gemeinsam genutzte Ressourcen und gewährleisten die Koordination und Synchronisation zwischen Prozessen oder Threads.

37
Q

Was machen die Operationen down und up?

A
  • “down” (P) Operation:
    • Nutzung eines Betriebsmittels: Aufgerufen, wenn ein Prozess eine Ressource nutzen möchte.
    • Prüfung auf Verfügbarkeit: Die “down”-Operation überprüft, ob freie Ressourcen vorhanden sind.
    • Reservierung: Bei Verfügbarkeit wird eine Ressource reserviert, und der Prozess kann voranschreiten.
    • Blockierung: Wenn keine Ressourcen verfügbar sind, wird der Prozess in die Warteschlange “W” aufgenommen und blockiert.
  • “up” (V) Operation:
    • Freigabe eines Betriebsmittels: Aufgerufen, wenn ein Prozess eine Ressource freigibt.
    • Erhöhung der verfügbaren Ressourcen: Die “up”-Operation erhöht die Anzahl der verfügbaren Ressourcen.
    • Wecken von wartenden Prozessen: Wenn es wartende Prozesse in der Warteschlange “W” gibt, wird einer davon geweckt und kann fortsetzen.

Diese Operationen bieten eine Möglichkeit, die Verwendung und Freigabe von gemeinsamen Ressourcen zu koordinieren und sicherzustellen, dass Prozesse synchronisiert auf die Ressourcen zugreifen.

38
Q

Wie kommt ein Prozess wieder aus der Warteschlange eines Semaphors aus, wenn er bei der Ausführung von down blockiert?

A
  • Freigabe von Betriebsmitteln: Wenn ein anderer Prozess die “up”-Operation aufruft und Betriebsmittel freigibt, erhöht sich die Anzahl der verfügbaren Betriebsmittel.
  • Weckvorgang: Wenn die Anzahl der freien Betriebsmittel nach der “up”-Operation größer als 0 ist und wartende Prozesse in der Warteschlange “W” vorhanden sind, wird ein Prozess aus der Warteschlange geweckt.
  • Bereitstellung: Der geweckte Prozess wird bereit gemacht, das heißt, er wird aus dem blockierten Zustand in den bereiten Zustand überführt.
  • Fortsetzung der Ausführung: Der geweckte Prozess kann nun seine Ausführung fortsetzen und den kritischen Abschnitt betreten, da die notwendigen Betriebsmittel verfügbar sind.

Durch diesen Mechanismus können blockierte Prozesse aus der Warteschlange eines Semaphors wieder aktiviert werden, sobald die benötigten Ressourcen verfügbar sind.

39
Q

Was macht der Prozess, der aus der Warteschlange eines Semaphors auskommt? (Aufpassen, er führt nicht die down-Operation nochmal!!)

A
  • Bereitstellung: Ein aufgeweckter Prozess wird in den bereiten Zustand versetzt, nicht jedoch erneut die “down”-Operation ausgeführt.
  • Fortsetzung der Ausführung: Der Prozess kann nun seine Ausführung fortsetzen und den kritischen Abschnitt betreten.
  • Kritischer Abschnitt: Im kritischen Abschnitt kann der Prozess die benötigten Betriebsmittel nutzen, die zuvor durch die “up”-Operation freigegeben wurden.
  • Beispiel: Im genannten Beispiel mit dem Berichterstatter wird dieser nach dem Aufwecken den Zähler ausgeben und auf 0 setzen, um seine Aufgabe zu erfüllen.

Die Aufgabe des Prozesses, der aus der Warteschlange eines Semaphors herauskommt, hängt von seinem Programmierungsziel und der Funktionalität ab, die er im kritischen Abschnitt ausführt.

40
Q

Welche Vorteile hat ein Semaphor? (Vermeidung von busy waiting, warum?)

A
  • Vermeidung von busy waiting: Ein Semaphor verhindert das Auftreten von busy waiting, bei dem ein Prozess in einer Schleife auf eine Bedingung wartet.
  • Geringere CPU-Auslastung: Durch die Blockierung eines wartenden Prozesses wird die CPU-Auslastung reduziert.
  • Effiziente Ressourcennutzung: Die CPU wird nicht durch sinnlose Schleifen belegt, sondern steht anderen Prozessen zur Verfügung.
  • Verbesserte Systemleistung: Die Vermeidung von busy waiting trägt zur insgesamten Leistungssteigerung des Systems bei.
  • Ressourcenschonung: Die CPU wird nicht unnötig beansprucht, was zu einer längeren Lebensdauer der Hardware führen kann.
  • Bessere Skalierbarkeit: Ein System mit Semaphoren kann besser skalieren, da es Ressourcen effizienter nutzt und Wartezeiten minimiert.
41
Q

Warum enthalten down und up auch einen kritischen Abschnitt?

A
  • Schutz der Semaphor-Variable: Die down- und up-Operationen greifen auf die gemeinsame Semaphor-Variable zu.
  • Vermeidung von Race Conditions: Wenn mehrere Prozesse gleichzeitig die Operationen ausführen, kann es zu race conditions und Inkonsistenzen in der Semaphor-Variable kommen.
  • Atomare Ausführung: Um Inkonsistenzen zu vermeiden, müssen die Operationen atomar, also ohne Unterbrechung, ausgeführt werden.
  • Eingebauter kritischer Abschnitt: Die down- und up-Operationen enthalten daher selbst einen kritischen Abschnitt, der sicherstellt, dass sie von anderen Prozessen nicht unterbrochen werden.
  • Synchronisation: Dieser kritische Abschnitt gewährleistet die Synchronisation der Operationen und schützt die Semaphor-Variable vor gleichzeitigen Zugriffen.
42
Q

Wie kann man die unteilbare Operationen bei einem Einprozessorsysytem realisieren? Was ist die Gefahr?

A
  • Deaktivierung der Interrupts: In einem Einprozessorsystem können unteilbare Operationen durch Deaktivierung der Interrupts realisiert werden.
  • Verhindern von Unterbrechungen: Durch Deaktivierung der Interrupts wird verhindert, dass andere Prozesse oder Interrupt-Handler den aktuellen Prozess unterbrechen.
  • Schutz des kritischen Abschnitts: Die Deaktivierung der Interrupts schützt den kritischen Abschnitt vor Störungen, die von außen kommen könnten.
  • Gefahr der Systemreaktion: Die Gefahr besteht darin, dass während der Deaktivierung der Interrupts das System nicht auf externe Ereignisse reagieren kann, wie z.B. Benutzereingaben oder Netzwerkverkehr.
  • Verzögerung oder Ausfall: Dies kann zu Verzögerungen oder sogar zum Ausfall des Systems führen, da wichtige Ereignisse nicht rechtzeitig behandelt werden.
  • Kurze Deaktivierung: Daher sollte die Deaktivierung der Interrupts nur für kurze Zeit und nur in absolut kritischen Abschnitten erfolgen, um die Auswirkungen auf die Systemreaktion zu minimieren.
43
Q

Was macht der Systemaufruf fork?

A
  • Erzeugung eines neuen Prozesses: Der Systemaufruf fork() erzeugt einen neuen Prozess, der eine genaue Kopie des aufrufenden Prozesses ist.
  • Kindprozess: Der neue Prozess wird als Kindprozess bezeichnet und erhält eine eigene eindeutige Prozess-ID.
  • Kopie des Adressraums: Der Kindprozess erhält eine Kopie des Adressraums des Elternprozesses, einschließlich Code, Daten und Stapel.
  • Ausführung des Codes: Der Kindprozess führt den gleichen Code wie der Elternprozess aus, beginnend mit der Anweisung nach dem fork()-Aufruf.
  • Unterschiedliche Prozess-IDs: Eltern- und Kindprozess haben unterschiedliche Prozess-IDs.
  • Rückgabewert: Im Elternprozess ist der Rückgabewert des fork()-Aufrufs die Prozess-ID des Kindprozesses, während er im Kindprozess 0 ist.

Der fork()-Aufruf ermöglicht die Erzeugung von Kindprozessen, die in ihrem Verhalten ähnlich sind, aber unabhängig voneinander arbeiten.

44
Q

Was sind Threads? (Konzept vom Prozess: ein Prozess hat einen Adressraum und einen Ausführungspfad, der durch Befehlszähler beschrieben wird. Konzept von Threads: erlaubt einen gleichen Adressraum, aber mehrere Ausführungspfade)

A
  • Leichtgewichtige Prozesse: Threads sind leichtgewichtige Einheiten innerhalb eines Prozesses, die unabhängig voneinander ausgeführt werden können.
  • Gleicher Adressraum: Threads teilen denselben Adressraum wie der Prozess, in dem sie laufen.
  • Eigener Ausführungspfad: Jeder Thread hat seinen eigenen Ausführungspfad, der durch einen individuellen Befehlszähler beschrieben wird.
  • Eigener Stapel: Jeder Thread verfügt über seinen eigenen Stapel zur Verwaltung seiner Funktionen und Aufrufe.
  • Parallele Ausführung: Threads ermöglichen die parallele Ausführung mehrerer Aufgaben innerhalb eines Prozesses.
  • Vermeidung von Overhead: Im Vergleich zur Erstellung separater Prozesse entfällt der Overhead für das Erstellen und Verwalten separater Adressräume.
  • Zugriff auf gemeinsame Ressourcen: Threads können auf gemeinsame Ressourcen zugreifen, was eine effiziente Kommunikation und Koordination ermöglicht.
  • Synchronisation: Threads müssen synchronisiert werden, um Probleme wie race conditions und inkonsistente Zustände zu vermeiden.
45
Q

Was haben die Threads eines Prozesses gemeinsam und was nicht?

A
  • Leichtgewichtige Prozesse: Threads sind leichtgewichtige Einheiten innerhalb eines Prozesses, die unabhängig voneinander ausgeführt werden können.
  • Gleicher Adressraum: Threads teilen denselben Adressraum wie der Prozess, in dem sie laufen.
  • Eigener Ausführungspfad: Jeder Thread hat seinen eigenen Ausführungspfad, der durch einen individuellen Befehlszähler beschrieben wird.
  • Eigener Stapel: Jeder Thread verfügt über seinen eigenen Stapel zur Verwaltung seiner Funktionen und Aufrufe.
  • Parallele Ausführung: Threads ermöglichen die parallele Ausführung mehrerer Aufgaben innerhalb eines Prozesses.
  • Vermeidung von Overhead: Im Vergleich zur Erstellung separater Prozesse entfällt der Overhead für das Erstellen und Verwalten separater Adressräume.
  • Zugriff auf gemeinsame Ressourcen: Threads können auf gemeinsame Ressourcen zugreifen, was eine effiziente Kommunikation und Koordination ermöglicht.
  • Synchronisation: Threads müssen synchronisiert werden, um Probleme wie race conditions und inkonsistente Zustände zu vermeiden.
46
Q

Welche Vorteile haben Threads im Vergleich zu Prozessen? (Kommunikation durch das gemeinsamen Datensegment)

A
  • Geringere Overhead-Kosten: Threads haben weniger Overhead bei der Erstellung und Verwaltung im Vergleich zu separaten Prozessen, da sie denselben Adressraum teilen.
  • Schnellere Erstellung und Beendigung: Threads können schneller erstellt und beendet werden als separate Prozesse, da weniger Ressourcen und Zeit benötigt werden.
  • Effiziente Kommunikation: Threads können auf gemeinsame Ressourcen und Daten im gemeinsamen Adressraum zugreifen, was die Kommunikation und den Datenaustausch erleichtert.
  • Geringerer Speicherbedarf: Da Threads denselben Adressraum teilen, ist der benötigte Speicher insgesamt geringer im Vergleich zur Erstellung mehrerer separater Prozesse.
  • Bessere Ressourcennutzung: Threads ermöglichen eine effizientere Nutzung von Systemressourcen, da weniger Speicherplatz und Zeit für die Erstellung benötigt werden.
  • Einfachere Synchronisation: Die Synchronisation zwischen Threads ist in der Regel einfacher, da sie direkt auf gemeinsame Daten zugreifen können, während Prozesse Interprozesskommunikationsmechanismen benötigen.
  • Schnellere Kommunikation: Die Kommunikation zwischen Threads ist schneller, da sie auf gemeinsame Daten zugreifen, ohne auf externe Kommunikationsmechanismen angewiesen zu sein.
47
Q

Wo kann man Threads einsetzen?

A

Threads können in folgenden Situationen eingesetzt werden:

  • Netzwerkkommunikation: Threads können gleichzeitig auf eingehende Netzwerkanfragen reagieren, ohne separate Prozesse erstellen zu müssen.
  • Multimediaanwendungen: In Multimediaanwendungen, wo gleichzeitige Audio- und Videoverarbeitung erforderlich ist, können Threads die Aufgaben parallel verarbeiten.
  • Grafische Benutzeroberflächen (GUI): Threads können Benutzereingaben und GUI-Aktualisierungen parallel verarbeiten, um eine reaktive Benutzeroberfläche zu gewährleisten.
  • Datenbanken: Threads können gleichzeitig Datenbankanfragen bearbeiten, um die Leistung in datenintensiven Anwendungen zu verbessern.
  • Hintergrundprozesse: Threads können Hintergrundprozesse wie Datensynchronisation, Dateiverwaltung und Aktualisierungen verarbeiten, ohne die Hauptfunktionalität zu beeinträchtigen.
  • Spieleentwicklung: In Spielen können Threads für die parallele Verarbeitung von Grafiken, KI-Berechnungen, Physiksimulationen und mehr eingesetzt werden.
  • Parallelverarbeitung: Threads können in Anwendungen verwendet werden, die Parallelverarbeitung erfordern, wie wissenschaftliche Berechnungen, Simulationen oder Datenanalyse.
  • Webserver: Threads können gleichzeitig auf Anfragen von verschiedenen Clients reagieren und die Serverleistung verbessern.

Grundsätzlich können Threads überall eingesetzt werden, wo Aufgaben parallel verarbeitet werden müssen, um die Effizienz, Leistung und Reaktionsfähigkeit einer Anwendung zu verbessern.

48
Q

Was ist der Unterschied zwischen Benutzer-Threads und Kernel-Threads?

A
  • Benutzer-Threads: Diese werden auf Benutzerebene implementiert und von einer Thread-Bibliothek auf Benutzerebene verwaltet. Das Betriebssystem ist sich der Existenz dieser Threads nicht bewusst und behandelt sie wie normale Prozesse. Die Thread-Bibliothek entscheidet, welcher Thread ausgeführt wird und kann bei Bedarf die Ausführung eines Threads unterbrechen. Allerdings kann ein blockierender Benutzer-Thread die Ausführung anderer Benutzer-Threads in derselben Thread-Gruppe beeinträchtigen.
  • Kernel-Threads: Diese werden im Betriebssystemkern implementiert und vom Betriebssystemkern verwaltet. Das Betriebssystem plant und führt diese Threads aus, was eine effizientere Ausführung ermöglicht. Kernel-Threads sind unabhängig voneinander und können parallel ausgeführt werden, auch wenn ein Thread blockiert ist. Das Betriebssystem kann Prioritäten und Zeitquanten für die Ausführung von Kernel-Threads verwalten, um eine gerechte Verteilung der Ressourcen sicherzustellen.

Insgesamt bieten Kernel-Threads in der Regel eine bessere Leistung und Effizienz, da sie auf Systemebene verwaltet werden und das Betriebssystem direkten Einfluss auf ihre Planung und Ausführung hat. Benutzer-Threads können jedoch nützlich sein, wenn eine höhere Flexibilität in der Thread-Verwaltung erforderlich ist, da die Thread-Bibliothek auf Benutzerebene die Möglichkeit bietet, eigene Scheduling-Algorithmen und Verwaltungsmechanismen zu implementieren.

49
Q

Was ist ein Dateisystem? Wozu ist ein Dateisystem gut?

A

Ein Dateisystem erfüllt folgende Hauptfunktionen:

  • Organisation und Speicherung: Ein Dateisystem organisiert und speichert Dateien auf dem Datenträger. Es verwaltet den verfügbaren Speicherplatz, weist Speicherblöcke zu und sorgt dafür, dass Dateien effizient abgelegt werden können.
  • Dateinamen und Hierarchie: Ein Dateisystem ermöglicht es Benutzern, Dateien und Ordner mit verständlichen Namen zu versehen und in einer hierarchischen Struktur zu organisieren. Dadurch wird der Zugriff auf die gespeicherten Informationen erleichtert.
  • Zugriffsverwaltung: Ein Dateisystem bietet Mechanismen zur Verwaltung von Zugriffsrechten und Sicherheitseinstellungen für Dateien und Ordner. Benutzer können festlegen, wer auf welche Dateien zugreifen, sie lesen, ändern oder löschen darf.
  • Metadatenverwaltung: Ein Dateisystem speichert Metadaten wie Dateigröße, Erstellungsdatum, Zugriffsrechte und Speicherort. Diese Informationen sind wichtig für die Verwaltung und Organisation von Dateien.
  • Fehlerbehandlung und Datenintegrität: Ein Dateisystem kann Fehlererkennungs- und Fehlerkorrekturmechanismen implementieren, um die Integrität der gespeicherten Daten zu gewährleisten. Dies kann Fehler beim Lesen oder Schreiben von Daten erkennen und beheben.
  • Effiziente Suche und Verwaltung: Ein Dateisystem ermöglicht effiziente Such- und Verwaltungsfunktionen, um Dateien basierend auf Kriterien wie Name, Erstellungsdatum oder Typ zu finden und zu organisieren.

Insgesamt ist ein Dateisystem von entscheidender Bedeutung, um den Speicherplatz auf Datenträgern effizient zu nutzen, den Benutzern einen geordneten Zugriff auf ihre Dateien zu ermöglichen und die Sicherheit und Integrität der gespeicherten Daten zu gewährleisten.

50
Q

Welche Informationen gibt es in der Attribute einer Datei?

A

Die genauen Attribute einer Datei können von Dateisystem zu Dateisystem und von Betriebssystem zu Betriebssystem unterschiedlich sein. Hier sind jedoch einige der häufigsten Attribute, die in den meisten Dateisystemen zu finden sind:

  • Dateiname: Der Name der Datei, der von Benutzern verwendet wird, um auf die Datei zuzugreifen.
  • Dateityp: Die Art der Datei, z. B. Textdokument, Bild, Programm usw.
  • Dateigröße: Die Größe der Datei in Bytes, Kilobytes, Megabytes usw.
  • Erstellungsdatum: Das Datum und die Uhrzeit, an dem die Datei erstellt wurde.
  • Änderungsdatum: Das Datum und die Uhrzeit, an dem die Datei zuletzt geändert wurde.
  • Zugriffsrechte: Die Berechtigungen, die festlegen, welche Benutzer oder Gruppen auf die Datei zugreifen, sie lesen, schreiben oder ausführen dürfen.
  • Eigentümer: Der Benutzer oder die Gruppe, dem die Datei gehört und der die Berechtigungen festlegt.
  • Speicherort: Der physische Speicherort der Datei auf dem Datenträger, oft in Form von Speicherblöcken oder Sektoren.
  • Attributänderungsdatum: Das Datum und die Uhrzeit, an dem die Dateiattribute zuletzt geändert wurden.
  • Versteckt: Ein Attribut, das angibt, ob die Datei im Dateisystem sichtbar ist oder nicht.
  • Schreibschutz: Ein Attribut, das angibt, ob die Datei schreibgeschützt ist und nicht verändert werden kann.
  • Komprimierung: Ein Attribut, das angibt, ob die Datei komprimiert ist, um Speicherplatz zu sparen.
  • Verschlüsselung: Ein Attribut, das angibt, ob die Datei verschlüsselt ist, um die Daten zu schützen.
  • Besitzeränderungsdatum: Das Datum und die Uhrzeit, an dem der Dateibesitzer geändert wurde.

Diese Attribute ermöglichen es dem Betriebssystem und den Anwendungen, Informationen über Dateien zu speichern, sie zu verwalten und auf sie zuzugreifen.

51
Q

Was sind die Hardlinks?

A

Ein Hardlink ist ein Konzept in Dateisystemen, das es ermöglicht, dass eine Datei mehrere Namen oder Verweise hat, die alle auf denselben Inhalt in einem bestimmten Speicherbereich verweisen. Hier sind die Hauptmerkmale von Hardlinks:

  • Verweis auf denselben Inhalt: Wenn ein Hardlink auf eine vorhandene Datei erstellt wird, wird ein zusätzlicher Verweis auf denselben Inhalt in der Datei erstellt. Das bedeutet, dass der Inhalt der Datei nur einmal auf der Festplatte gespeichert wird, aber von verschiedenen Namen aus zugänglich ist.
  • Gleiche Metadaten: Der Hardlink teilt die gleichen Metadaten wie die ursprüngliche Datei, einschließlich Zugriffsrechten, Eigentümerinformationen, Änderungszeitstempeln usw.
  • Keine Unterscheidung: Im Dateisystem gibt es normalerweise keine Unterscheidung zwischen der ursprünglichen Datei und ihren Hardlinks. Alle Namen, unter denen die Datei aufgerufen wird, sind gleichwertig.
  • Veränderungen wirken sich auf alle aus: Wenn der Inhalt einer Datei durch einen Hardlink geändert wird, werden diese Änderungen in allen Hardlinks angezeigt, da sie auf denselben Inhalt verweisen.

Es ist wichtig zu beachten, dass Hardlinks normalerweise innerhalb desselben Dateisystems funktionieren, da sie auf denselben physischen Datenblock verweisen. Ein Löschen einer Datei oder eines Hardlinks führt nicht zum Verlust des Inhalts, solange noch mindestens ein Verweis auf diesen Inhalt vorhanden ist.

Hardlinks können dazu beitragen, Speicherplatz zu sparen, da sie es ermöglichen, dass mehrere Dateien denselben Inhalt teilen, ohne zusätzlichen Speicherplatz zu beanspruchen.

52
Q

Was ist ein Verzeichnis?

A

Ein Verzeichnis (auch Ordner genannt) ist eine spezielle Art von Datei, die in Betriebssystemen verwendet wird, um andere Dateien und Verzeichnisse zu organisieren und zu strukturieren. Hier sind einige wichtige Punkte, die ein Verzeichnis ausmachen:

  • Organisatorische Einheit: Ein Verzeichnis dient dazu, Dateien und Unterverzeichnisse zu gruppieren und zu organisieren. Es ermöglicht Benutzern, eine hierarchische Struktur von Dateien und Ordnern zu erstellen, um den Inhalt des Dateisystems übersichtlich zu halten.
  • Enthält Einträge: Ein Verzeichnis enthält Einträge für die darin enthaltenen Dateien und Unterverzeichnisse. Jeder Eintrag enthält Informationen wie den Namen der Datei oder des Verzeichnisses, den Typ (Datei oder Verzeichnis) und den Speicherort.
  • Hierarchische Struktur: Verzeichnisse sind normalerweise in einer hierarchischen Baumstruktur organisiert. Es gibt ein Wurzelverzeichnis (oft als “Root” bezeichnet), das die oberste Ebene der Hierarchie darstellt. Darunter befinden sich verschiedene Unterverzeichnisse und Dateien.
  • Pfad: Ein Verzeichnis kann über einen Pfadreferenziert werden, der die Reihenfolge der Verzeichnisse angibt, die zu dem gesuchten Verzeichnis führen. Pfade können absolut (beginnend bei der Wurzel) oder relativ (bezogen auf das aktuelle Verzeichnis) sein.
  • Zugriffsrechte und Metadaten: Verzeichnisse können auch Zugriffsrechte und Metadaten wie Erstellungszeit, Änderungszeit und Zugriffszeit haben. Diese Informationen regeln den Zugriff auf das Verzeichnis und seine Inhalte.

Verzeichnisse spielen eine wichtige Rolle bei der Organisation von Dateien auf einem Datenträger und erleichtern den Benutzern das Auffinden und Verwalten ihrer Daten.

53
Q

Wie sehen die Zugriffsberechtigungen einer Datei bei UNIX aus?

A

Die Zugriffsberechtigungen für eine Datei in UNIX werden durch eine Zeichenfolge von 10 Zeichen dargestellt, die in der Ausgabe des Befehls “ls -l” angezeigt wird. Jede dieser Zeichen hat eine bestimmte Bedeutung:

  1. Typ der Datei: Das erste Zeichen gibt den Dateityp an. Zum Beispiel ist “d” für Verzeichnisse und “-“ für reguläre Dateien.
  2. Rechte des Eigentümers: Die nächsten drei Zeichen repräsentieren die Zugriffsrechte des Eigentümers der Datei: “r” für Lesen, “w” für Schreiben und “x” für Ausführen.
  3. Rechte der Gruppe: Die darauf folgenden drei Zeichen repräsentieren die Zugriffsrechte der Gruppe, der die Datei gehört.
  4. Rechte anderer Benutzer: Die letzten drei Zeichen repräsentieren die Zugriffsrechte für alle anderen Benutzer.

Ein Beispiel für die Darstellung der Zugriffsberechtigungen könnte sein: -rw-r--r--, was bedeutet, dass der Eigentümer die Datei lesen und schreiben kann, die Mitglieder der Gruppe sie lesen können und alle anderen Benutzer auch.

Die Zeichen “-“ in den Berechtigungen bedeuten, dass das entsprechende Zugriffsrecht nicht gewährt ist. Ein “r” oder “w” oder “x” zeigt an, dass das Recht gewährt ist.

Die Reihenfolge der Berechtigungen ist immer “Eigentümer - Gruppe - Andere Benutzer”. Dieses Zugriffsrechtesystem ermöglicht die feingranulare Steuerung, wer auf eine Datei zugreifen, sie ändern oder ausführen darf.

54
Q

Wie werden die Zugriffsrechte ausgewertet, wenn ein Prozess einen Zugriff startet?

A

Genau, die Auswertung der Zugriffsrechte erfolgt in der Reihenfolge des Eigentümers, der Gruppe und anderer Benutzer. Hier sind die Schritte im Detail:

  1. Eigentümer-Rechte: Zuerst wird überprüft, ob der Benutzer, der den Zugriff startet, der Eigentümer der Datei ist. Wenn ja, werden die Zugriffsrechte für den Eigentümer verwendet, um zu überprüfen, ob der Zugriff erlaubt ist.
  2. Gruppen-Rechte: Wenn der Benutzer nicht der Eigentümer der Datei ist, wird überprüft, ob der Benutzer Mitglied der Gruppe ist, der die Datei gehört. Wenn ja, werden die Zugriffsrechte für die Gruppe verwendet, um den Zugriff zu überprüfen.
  3. Andere Benutzer-Rechte: Wenn der Benutzer weder Eigentümer noch Mitglied der Gruppe ist, werden die Zugriffsrechte für alle anderen Benutzer verwendet.

Die tatsächliche Überprüfung erfolgt anhand der angeforderten Zugriffsart (Lesen, Schreiben, Ausführen) und den jeweiligen Zugriffsrechten in den Berechtigungen der Datei. Wenn der Prozess die erforderlichen Zugriffsrechte hat, wird der Zugriff gewährt. Andernfalls wird der Zugriff verweigert.

Es ist wichtig zu beachten, dass das Betriebssystem die Zugriffsrechte auf Dateiebene überprüft, bevor der Zugriff auf die tatsächlichen Daten der Datei erfolgt. Dies dient dazu, die Integrität und Sicherheit der Dateien zu gewährleisten.

55
Q

Wer vergibt die Zugriffsrechte?

A
  • Die Zugriffsrechte werden vom Eigentümer der Datei oder des Verzeichnisses festgelegt.
  • Der Eigentümer kann die Zugriffsrechte für den Eigentümer, die Gruppe und alle anderen Benutzer ändern.
  • Dies erfolgt mithilfe von Befehlen wie “chmod” oder “chown”.
  • In UNIX-ähnlichen Betriebssystemen können auch Administratoren oder Benutzer mit speziellen Berechtigungen Zugriffsrechte ändern.
56
Q

Wie werden die Zugriffsrechte bewertet bei einem Zugriff auf eine Datei?

A
  • Die Zugriffsrechte werden bei einem Zugriff auf eine Datei ausgewertet, um zu bestimmen, ob der Benutzer den Zugriff ausführen darf oder nicht.
  • Die Reihenfolge der Auswertung ist Eigentümer, Gruppe und alle anderen Benutzer.
  • Wenn der Benutzer der Eigentümer der Datei ist, werden die Zugriffsrechte für den Eigentümer verwendet.
  • Ist der Benutzer nicht der Eigentümer, aber Mitglied der Gruppe, werden die Zugriffsrechte für die Gruppe verwendet.
  • Wenn der Benutzer weder Eigentümer noch Gruppenmitglied ist, gelten die Zugriffsrechte für alle anderen Benutzer.
  • Bei ausreichenden Zugriffsrechten wird der Zugriff ausgeführt.
  • Fehlen die erforderlichen Zugriffsrechte, wird der Zugriff verweigert und eine Fehlermeldung ausgegeben.
57
Q

Was ist das Dateisystem FAT?

A
  • FAT (File Allocation Table) ist ein Dateisystem.
  • Es wird auf Wechseldatenträgern wie Disketten, USB-Sticks und SD-Karten eingesetzt.
  • Von Microsoft entwickelt, auch auf älteren Windows-Versionen wie MS-DOS und Windows 95/98/ME genutzt.
  • Verwendet die FAT-Tabelle zur Verwaltung der Dateizuordnung zu Speicherblöcken.
  • Jeder Speicherblock hat einen Eintrag in der FAT-Tabelle, der angibt, ob er frei oder von einer Datei belegt ist.
  • Die FAT-Tabelle speichert auch Informationen darüber, welche Datei den Block belegt, falls vorhanden.
58
Q

Was ist ein Eintrag in der FAT?

A
  • Ein Eintrag in der FAT (File Allocation Table) ist ein Wert in der Tabelle.
  • Er gibt an, ob ein Speicherblock auf dem Datenträger frei oder von einer Datei belegt ist.
  • Wenn belegt, enthält der Eintrag die Nummer des nächsten belegten Speicherblocks der Datei.
  • Die FAT verwaltet so die Zuordnung von Dateien zu Speicherblöcken.
  • Ein Eintrag für freie Blöcke enthält den Wert “free”.
59
Q

Was ist die Beziehung zwischen Einträgen und und Indizes der FAT?

A
  • Ein Eintrag in der FAT gibt an, ob ein Speicherblock frei oder von einer Datei belegt ist.
  • Wenn belegt, enthält der Eintrag die Nummer des nächsten belegten Speicherblocks der Datei.
  • Ein Index in der FAT ist eine Tabelle, die logische Blocknummern auf physische Blocknummern abbildet.
  • Die Indextabelle ermöglicht die Verwaltung der Zuordnung von logischen zu physischen Speicherblöcken.
  • Indizes und Einträge in der FAT arbeiten zusammen, um die Dateizuordnung und Speicherplatzverwaltung zu ermöglichen.
60
Q

Wie groß ist die FAT?

A

Um die Größe der FAT (File Allocation Table) zu berechnen, muss man die Anzahl der Blöcke auf der Festplatte mit der Länge der Blockadresse multiplizieren. Für eine Partition von 32 MByte bei einer Blockgröße von 512 Byte ergibt sich folgende Rechnung:

32 MByte = 32 * 1024 * 1024 Byte = 33.554.432 Byte
33.554.432 Byte / 512 Byte/Block = 65.536 Blöcke

Die Länge der Blockadresse hängt von der Größe der Partition ab. Für eine Partition von 32 MByte beträgt die Länge der Blockadresse in der Regel 2 Byte. Daher ergibt sich für die Größe der FAT folgende Rechnung:

65.536 Blöcke * 2 Byte/Block = 131.072 Byte

Die Größe der FAT beträgt also 131.072 Byte oder 128 KByte.

61
Q

Wie kann man die Lokalisierung eines Blocks einer Datei auf der Festplatte mit FAT feststellen? (sequenzielle Suche in der FAT)

A
  • Die Lokalisierung eines Blocks einer Datei auf der Festplatte mit FAT wird durch eine sequenzielle Suche in der FAT festgestellt.
  • Man sucht den Eintrag in der FAT, der der logischen Blocknummer des gesuchten Blocks entspricht.
  • Wenn der Eintrag “free” ist, ist der Block nicht belegt und die Suche endet.
  • Wenn der Eintrag eine Nummer enthält, wird die Suche fortgesetzt, um den nächsten Eintrag zu finden, der zur Nummer des nächsten Blocks passt.
  • Dies wird wiederholt, bis der Eintrag gefunden wird, der den letzten Block der Datei angibt oder ein Eintrag mit dem Wert “eof” (end of file) erscheint.
62
Q

Was ist dann die Nachteile von FAT bei großen Dateien und bei großen Anzahl der Blöcke?

A
  • Zeitaufwändige sequenzielle Suche in der FAT: Bei großen Dateien und vielen Blöcken ist die Suche in der FAT für jeden Block sehr zeitaufwendig, da sie viele Zugriffe auf den externen Speicher erfordert.
  • Fragmentierung: Bei einer großen Anzahl von Blöcken können diese auf der Festplatte verstreut sein, was zu Fragmentierung führt. Dies beeinträchtigt die Effizienz der Speichernutzung und kann die Leistung des Systems negativ beeinflussen.
  • Verschwendung von Speicherplatz: Die Größe der FAT wächst proportional zur Anzahl der Blöcke auf dem Datenträger, was zu einer ineffizienten Nutzung des Speicherplatzes führen kann.
  • Begrenzte Dateisystemgröße: Die maximale Größe von Dateien und des Dateisystems selbst ist bei FAT begrenzt, was die Handhabung großer Dateien erschweren kann.
  • Geringe Sicherheitsfunktionen: FAT bietet nur begrenzte Unterstützung für Zugriffsrechte und Sicherheitseinstellungen, was die Sicherheit von Dateien und Verzeichnissen einschränken kann.
63
Q

Wie macht das Dateisystem inode bei LINUX/UNIX?

A
  • Inode-Struktur: Jede Datei und jedes Verzeichnis hat eine zugehörige Inode-Struktur.
  • Attribute: Am Anfang der Inode stehen Attribute wie Zugriffsrechte, Eigentümer, Gruppe, Zeitstempel, Größe und Verweise.
  • Direkte Blöcke: Die Adressen der ersten 12 Blöcke der Datei werden direkt in der Inode gespeichert.
  • Indirekte Blöcke: Wenn eine Datei mehr als 12 Blöcke hat, werden die Adressen der nächsten Blöcke in einem indirekten Block gespeichert.
  • Zweifach indirekte Blöcke: Für weitere Blöcke werden Adressen in einem zweifach indirekten Block gespeichert und so weiter.
  • Effiziente Verwaltung: Dies ermöglicht die effiziente Verwaltung großer Dateien, da die Adressen direkt in der Inode gespeichert werden.
  • Fragmentierung vermeiden: Die Struktur minimiert die Fragmentierung, da Datenblöcke zusammenhängend organisiert werden können.
64
Q

Was ist ein inode?

A
  • Datenstruktur: Ein inode ist eine Datenstruktur in einem Dateisystem.
  • Metadaten: Enthält Metadaten wie Zugriffsrechte, Eigentümer, Gruppe, Zeitstempel, Größe.
  • Adressen der Blöcke: Speichert physische Adressen der Blöcke, die von der Datei genutzt werden.
  • Effiziente Verwaltung: Ermöglicht effiziente Verwaltung von Dateien und Verzeichnissen.
  • Vermeidung von Fragmentierung: Hilft, Fragmentierung des Speicherplatzes zu minimieren.
  • Informationen über Blöcke: Enthält Blockgröße und Anzahl der verwendeten Blöcke.
  • Verweise: Hält die Anzahl der Verweise auf das Objekt.
  • UNIX/Linux: Wird in UNIX/Linux-Dateisystemen verwendet.
65
Q

Was steht in einem inode? (Attributte und 13 Adressen)

A

In einem inode stehen:
- Metadaten: Informationen über Zugriffsrechte, Eigentümer, Gruppe, Zeitstempel, Größe und Verweise auf das Objekt.
- Adressen der ersten 12 Blöcke: Physische Adressen der ersten 12 Blöcke der Datei.
- Indirekter Block: Wenn die Datei mehr als 12 Blöcke hat, werden Adressen der nächsten Blöcke in einem indirekten Block gespeichert.

66
Q

Wie groß kann ein inode sein? (128 Byte in ext2)

A

Die Größe eines Inodes hängt vom Dateisystem ab. In ext2, einem Dateisystem, das in einigen Linux-Distributionen verwendet wird, beträgt die Größe eines Inodes standardmäßig 128 Byte.

67
Q

Wie kann man die maximale Größe einer Datei berechnen, wenn sie durch ein inode beschrieben wird?

A

Um die maximale Größe einer Datei zu berechnen, die durch ein Inode beschrieben wird, benötigen Sie Informationen zur Blockgröße und zur maximalen Anzahl der Datenblöcke, die von einem Inode unterstützt werden.

Angenommen, wir haben eine Blockgröße von B Bytes und ein Inode kann N Datenblöcke referenzieren. Dann ergibt sich die maximale Dateigröße (F) wie folgt:

Maximale Dateigröße (F) = Blockgröße × Anzahl der referenzierbaren Datenblöcke
F = B × N

In Ihrem Beispiel mit einer Blockgröße von 512 Byte und einer maximalen Anzahl von 64 referenzierbaren Datenblöcken (wie im genannten Beispiel):

F = 512 Byte/Block × 64 Blöcke = 32.768 Byte

Bitte beachten Sie, dass diese Berechnung eine einfache Schätzung ist und von Dateisystem zu Dateisystem variieren kann.

68
Q

Wie kann man die Lokalisierung eines Blocks einer Datei auf der Festplatte mit inode feststellen?

A

Die Lokalisierung eines Blocks einer Datei auf der Festplatte mit einem Inode kann durch den Zugriff auf die Indextabelle des Inodes erfolgen. Hier ist der Prozess im Detail:

  • Direkte Blöcke: In einem Inode sind normalerweise die physischen Adressen der ersten 12 Datenblöcke der Datei direkt gespeichert. Diese Blöcke können direkt über den Inode lokalisiert werden.
  • Indirekte Blöcke: Falls die Datei mehr als 12 Blöcke umfasst, werden die Adressen der nächsten Blöcke in einem indirekten Block gespeichert. Dieser indirekte Block wird in der Indextabelle des Inodes referenziert. Durch Zugriff auf diesen indirekten Block kann man die Adressen der nächsten Blöcke herausfinden.
  • Doppel-indirekte und dreifach-indirekte Blöcke: Für sehr große Dateien können weitere Ebenen von indirekten Blöcken erforderlich sein. Diese werden ebenfalls in der Indextabelle des Inodes referenziert. Ein doppel-indirekter Block enthält Verweise auf indirekte Blöcke, die dann wiederum die Adressen von Datenblöcken enthalten. Ein dreifach-indirekter Block enthält Verweise auf doppel-indirekte Blöcke, die dann wiederum Verweise auf indirekte Blöcke und schließlich Datenblöcke enthalten.

Die Indextabelle des Inodes enthält also Informationen über die physische Adresse der Blöcke, die von der Datei verwendet werden. Durch den Zugriff auf die Indextabelle und die Verfolgung der Verweise kann die Lokalisierung eines beliebigen Blocks einer Datei auf der Festplatte bestimmt werden.

69
Q

Wie viele Zugriffe auf die Festplatte höchstens werden benötigt, um einen Datenblock zu lokalisieren, wenn der inode schon im Hauptspeicher liegt?

A

Genau, wenn der Inode bereits im Hauptspeicher (RAM) vorhanden ist, werden höchstens 5 Zugriffe auf die Festplatte benötigt, um einen beliebigen Block einer Datei zu lokalisieren:

  • 1. Zugriff: Zugriff auf den Inode im Hauptspeicher, um die Informationen über die Blöcke der Datei zu erhalten.
  • 2. Zugriff: Lokalisierung des ersten Blocks (direkter Block) über die im Inode gespeicherte Adresse.
  • 3. Zugriff: Falls der Block ein indirekter Block ist, Zugriff auf den indirekten Block in der Indextabelle.
  • 4. Zugriff: Lokalisierung des gewünschten Blocks über die Adresse im indirekten Block.
  • 5. Zugriff: Falls der Block ein doppelter indirekter Block ist, Zugriff auf den doppelten indirekten Block in der Indextabelle.

In den meisten Fällen werden maximal 5 Zugriffe benötigt, um den gewünschten Block einer Datei zu lokalisieren, wenn der Inode bereits im Hauptspeicher vorhanden ist.