Diskussionsblätter

Aus II-Wiki
Wechseln zu: Navigation, Suche
Betriebssysteme (BS)
Vertiefungsrichtung Alle
Vorlesung
Vorlesender

Prof. Dr.-Ing. habil. Winfried Kühnhauser

Abschluß
Art k.A.


Die Diskussionsblätter stammen aus dem WS 2010/11 und sollen direkt der Klausurvorbereitung dienen.
Mithilfe bei der Vervollständigung und Verbesserung ist immer willkommen ;)
Und hier noch ein paar Links:

Diskussionsblatt 1

Frage 1: Wie würden Sie heute, zu Beginn des Kurses, den Begriff „Betriebssystem" beschreiben? Sehen Sie Analogien zwischen den Aufgaben und Funktionen von Betriebssystemen und denen gesellschaftlicher oder wirtschaftlicher Einrichtungen?

  • ...

Frage 2: Wie sind diejenigen Betriebssysteme in Erscheinung getreten, mit denen Sie bisher schon gearbeitet haben? Welche Aufgaben haben sie gelöst? Welche Probleme haben sie gezeigt?

  • ...

Frage 3: In der Vorlesung haben Sie ein breites Spektrum an Einsatzgebieten für Betriebssysteme kennen gelernt, das verdeutlichen sollte, welche sehr unterschiedlichen Anforderungen heute an Betriebssysteme gestellt werden. Kennen Sie über diese Szenarien hinaus Beispiele für Einsatzgebiete, in denen

• Echtzeitfahigkeit

• Robustheit

• Sicherheit

• Korrektheit

• Performanz

• Sparsamkeit

• Skalierbarkeit

eine zentrale Rolle spielen? Was wären die jeweiligen Konsequenzen, wenn ein Betriebssystem dabei diese Eigenschaften nicht besitzen würde?

Frage 4: Wenn Sie auf einem der heute üblichen 1000€-Personalcomputer Bürosoftware, Internetprogramme und Multimediaanwendungen nutzen möchten und die Wahl eines Betriebssystems hätten: welche der oben genannten und welche weiteren Eigenschaften würden Sie von diesem Betriebssystem erwarten?

  • Alle ;)

Frage 5: Warum könnte es problematisch sein, ein und dasselbe Betriebssystem auf Großrechnern und gleichzeitig auf eingebetteten Systemen einzusetzen?

  • Extreme unterschiede in der Leistung der Hardware mit unterschiedlichen Anforderungen
  • Eingebettete Systeme -> meist Spezialaufgaben für jeden Chip
  • Großrechner -> parallelisierbare Aufgaben

Frage 6: Welche Vorteile hat es aus Anwendersicht, Betriebssysteme als Virtualisierung von Maschinen zu verstehen?

  • genaue Kenntnisse der Maschine sind nicht erforderlich.

Diskussionsblatt 2

Frage 1: Welcher Zusammenhang besteht zwischen den Konzepten Nebenläufigkeit und Parallelität?
Wann können Aktivitäten auf einem System nur pseudoparallel ausgeführt werden?

  • Aktivitäten heißen nebenläufig, wenn zwischen ihnen keine kausalen Abhängigkeiten bestehen.
  • Parallel heißen sie erst, wenn sie auch zeitlich überlappend (oder gleichzeitig) ausgeführt werden.
  • Sie können nur pseudoparallel ausgeführt werden, wenn sie auf einem System mit nur einem Prozessor(kern) ausgeführt werden. (Nebenläufigkeit ist trotzdem nötig)


Frage 2: Wozu dienen Prozessmodelle? Aus welchen Bausteinen setzt sich ein Prozessmodell zusammen?
Welche dieser Bausteine finden sich typischerweise in Prozessdeskriptoren wieder?

  • Prozessmodelle definieren konkrete Prozesseigenschaften.
  • Ein Prozessmodell ist durch die Operationen auf Prozesse (zB erzeugen, beenden...) und die nichtfunktionalen Eigenschaften (NFE), also zB Rechtemanagement und Ressourcenmanagement, der Prozesse definiert. Es wird durch die Operationen, Datenstrukturen und Algorithmen des Prozessmanagements implementiert.
  • Im Prozessdeskriptor finden sich die NFEs wieder, also Ressourcenmanagement, Rechtemanagement und Laufzeitmanagement.


Frage 3: Da ein Prozessor zu einem Zeitpunkt nur von einer Aktivität genutzt werden kann, erfolgt die Bearbeitung von Prozessen auf Systemen mit nur einem Prozessor tatsächlich strikt sequentiell; warum spricht man dennoch von (pseudo)paralleler Ausführung?

  • Da die Prozesse abwechselnd im Prozessor laufen können und dem Nutzer so hohe Performanz vorgegaukelt wird, spricht man von pseudoparalleler Ausführung. Dass Entscheidende ist, dass nicht erst ein Prozess fertig werden muss, bevor ein anderer startet.


Frage 4: Aus welchem Grund wurde das Thread-Konzept entwickelt?
Welche zwei eigentlich unabhängigen Konzepte sind im Modell des ursprünglichen (Schwergewichts-)Prozesses vereint?

  • Alle nebenläufigen Aktivitäten in in einzelnen Prozessen laufen zu lassen verursacht hohe Kosten durch Ressourcenallokation, virtuelle private Adressräume und Interprozesskommunikation (IPC). Günstiger ist es nebenläufige Aktivitäten innerhalb eines Programms in verschiedene Threads auszulagern.
  • Im ursprünglichen Prozessmodell sind die Konzepte der Parallelität und des Ressourcenmanagements bzw. des Schutzes vereint.


Frage 5: Warum nenn man ein Prozessmodell "single-" bzw. "multi-threaded"?
Wie unterscheiden sich die Prozessdeskriptoren dieser beiden Modellvarianten?

  • Ein "multi-threaded" Prozessmodell zeichnet sich dadurch aus dass in einem Prozess mehrere parallele Aktivitäten stattfinden können, in einem "single-threaded" Prozess Modell ist innerhalb eines Prozesses lediglich sequenzielle Aktivität, also genau ein Thread möglich.
  • Die Prozessdeskriptoren der "multi-threades" Modelle enthalten zusätzlich zu den Informationen eines klassischen PCBs Informationen zu den einzelnen Threads, die sogenannten Threaddeskriptoren (TCB), welche aus dem Ablaufkontext (Pointer etc.) und dem Threadzustand bestehen.


Frage 6: Wozu dienen Prozess- bzw. Threadzustände?
Welche elementaren Zustände finden sich in jedem Prozessmodell?

  • Sie werden benötigt um das Ressourcenmanagement strategisch günstig zu gestalten.
  • In jedem Prozessmodell finden sich die Zustände frisch, bereit, aktiv, blockiert und beendet.


Frage 7: Worin besteht die Verfeinerung des 7-Zuständemodells gegenüber einem 5-Zuständemodell?
Welche Zustände kommen hinzu und welche Situationen werden hierdurch reflektiert?

  • Das Modell wird um weitere prozessexterne Wartegründe verfeinert.
  • Das Modell wurde um bereiten, aber suspendierten und blockierten suspendierten Zustand verfeinert. Diese beiden zustände kennzeichnen eine Situation, in welcher der Prozess längere Zeit "schläft", weil er vom Benutzer stillgelegt wurde oder weil er temporär keinen Arbeitsspeicher besitzt.


Frage 8: Welches sind die Gründe für die einzelnen Prozesszustände des 7-Zuständemodells?
Warum verwendet UNIX darüber hinaus ein Zustandsdiagramm mit 9 Zuständen?
Gibt es all diese Prozesszustände analog auch für Threads?

  • Gründe für die einzelnen Zustände:
    • frisch: Prozess der erzeugt wurde, aber dessen Befehle und Daten noch nicht im Speicher liegen
    • bereit: Prozess dessen Befehle und Daten im Speicher liegen, der aber zZ keinen Prozessor besitzt
    • aktiv: Prozess der alle nötigen Betriebsmittel besitzt und auf einem Prozessor läuft
    • blockiert: Prozess der nicht weiterlaufen kann, da er zB. auf eine Ein- Ausgabe wartet
    • blockiert/suspendiert: Prozess der längere Zeit nicht weiterlaufen kann, da er ausgelagert wurde
    • bereit/suspendiert: Prozess der vom Benutzer temporär stillgelegt wurde
    • beendet: Prozess der beendet wurde, dessen Ressourcen aber noch freigegeben werden müssen
  • UNIX benötigt den weiteren Zustand preempted für Prozesse deren Rechnenzeit abgelaufen ist, desweiteren wird ein Zustand für die Unterscheidung zwischen user running und kernel running (der Prozess kann Befehle des Kerns ausführen) benötigt.
  • Ja, die gibt es.


Frage 9: Wozu dienen Threadzustandsmodelle?

  • siehe Frage 6


Frage 10: Warum benötigt jeder Thread einen eigenen Stack?

  • Jeder Thread benötigt einen eigenen Stack um seinen Instruction Pointer (IP) und seine ALU-Flags zu speichern.


Frage 11: Worin besteht der Unterschied zwischen Kernel- und User-Level-Threads?
Welche Vor- und Nachteile besitzt die jeweilige Form?
Wo befinden sich die PCB- und TCB-Datenstrukturen?

  • ULTs werden im Anwendungsprogramm über Bibliotheken implementiert (zu Fuß), KLTs sind in Programmiersprachen integriert und werden vom BS unterstützt.
  • ULT:
    • Vorteile: Performanz, da keine Systemaufrufe (Overhead); Individualität, da eigenes Scheduling möglich; Portabilität, da BS unabhängig
    • Nachteile: blockierender Systemaufruf legt kompletten Prozess lahm
  • KLT:
    • Vorteile: Nutzung von Mehrkernarchitekturen; bei blockierendem Systemaufruf wird nur aufrufender Thread lahmgelegt
    • Nachteile: Management Overhead
  • PCB und TCB befinden sich bei KLTs im BS-Adressraum, bei ULTs befindet sich der PCB im BS-Adressraum und der TCB im Adressraum des jeweiligen Prozesses.


Frage 12: Durch welche Ereignisse wechselt ein Thread vom Zustand aktiv in den Zustand blockiert?
Durch welche in den Zustand suspendiert?

  • Ein Thread wechselt in den Zustand blockiert wenn er auf ein Ereignis (zB Timer-Ablauf, EA oä) wartet.
  • Ein Thread wechselt in den Zustand suspendiert, wenn er ausgelagert wird oder vom Benutzer temporär stillgelegt wird.


Frage 13: Welche Auswirkung hat im Round-Robin Schedulingalgorithmus die Veränderung der Größe der Zeitscheibe?

  • Bei Vergrößerung der Zeitscheibe verlängern sich die Antwortzeiten des Rechners auf Eingaben, bei Verkleinerung erhöht sich der Overhead durch häufige Prozesswechsel.


Frage 14: Round-Robin-Scheduler verwalten normalerweise eine oder mehrere Listen von Prozessen, wobei jeder lauffähige Prozess genau einmal aufgeführt wird.
Was würde passieren, wenn ein Prozess 2x in der Liste stehen würde?
Aus welchen Gründen könnte man so etwas erlauben?

  • Er würde häufiger Prozessorzeit zugewiesen bekommen.
  • Man könnte auf diese Weise Stufenweise die Priorität des Prozesses erhöhen und somit seine Bearbeitung vorantreiben.


Frage 15: Welche Form des Schedulings: preemptiv/ nicht preemptiv führt aus grundsätzlichen Überlegungen zu robusteren Systemen?

  • Beim preemptiven Scheduling entscheidet der Prozessor durch sein eigenes Scheduling, welcher Prozess wann, wie viel Rechenzeit bekommt.
  • Beim nicht preemptiven (kooperativen) Scheduling entscheiden die Prozesse selber, wann sie ihre Rechenzeit wieder abgeben. Die Prozesse führen Systemaufrufe zur Abgabe der Rechenzeit durch. Vergisst ein Prozess diesen Aufruf, ist das gesamte System lahmgelegt.

--> preemptives Scheduling ist robuster, da ein Fehler im Prozess und vergessene Aufrufe keinen Einfluss auf andere Prozesse haben.


Frage 16: Welcher Schedulingalgorithmus - EDF oder RMS - führt bei einem Echtzeitsystem mit 3 Threads und den (P,C)-Charakteristika (5,1),(5,2) und (10,1) garantiert zu einem ausführbaren Schedule?
Beweis?

  • beide führen garantiert zu einem ausführbaren Schedule.
  • (Formeln siehe Script Kap.2.3.5 S.90 bzw 91)
    • EDF: 1/5+2/5+1/10=0,7 <= 1 works!
    • RMS: 0,7<=3*(2^(1/3)-1) = 0,78 geht auch!

Diskussionsblatt 3

Frage 1: Welche prinzipiellen Probleme entstehen, wenn parallel ablaufende Threads auf einen gemeinsamen Speicherbereich zugreifen?
Welche beiden konkreten Synchronisationsprobleme bestehen beim Erzeuger/Verbraucher-Problem?

  • Konsistenz der Daten nicht gegeben
  • Der Grund vom Erzeuger/Verbraucher-Problem ist die Geschwindigkeit der einzelnen Prozesse/Threads
  • Erzeuger "produziert" schneller als der Verbraucher die Daten verwertet -> Pufferüberlauf
  • Erzeuger "produziert" zu langsam -> Leere


Frage 2: Eignet sich der in der Vorlesung vorgestellt Peterson-Algorithmus für die Synchronisation zweier Threads auf einer Rechnerarchitektur mit 2 Prozessoren und gemeinsamen Speicher?
Peterson Algorithmus:

// globale Variablen
boolean flag0 = false, flag1 = false;
int turn;

//Prozess #0
(1) flag0 = true;
(2) turn=1;
(3) while (flag1 && (turn == 1)) {} //busy-waiting
(4) <kritischer Abschnitt>
(5) flag0 = false;

//Prozess #1
(1) flag1 = true;
(2) turn=0;
(3) while (flag0 && (turn == 0)) {} //busy-waiting
(4) <kritischer Abschnitt>
(5) flag1 = false;


(ohne "Staffelstab" (turn), womit der Algorithmus als erstes im (alten) Skript steht, besteht große Gefahr auf Verklemmung, falls beide Threads gleich schnell mit gleichzeitigem Start laufen. So würden beide Threads die flag Variable auf true setzen und nichts würde mehr passieren.)

  • Ja: Um die Konsistenz der Daten zu gewährleisten
  • Nein: Da sich ein Prozess durch schnellere "Arbeit" immernoch mehrmals hintereinander in den kritischen Abschnitt begeben kann kann es immernoch "Leere" bzw einen Pufferüberlauf geben.


Frage 3: In der Vorlesung haben wir binäre Semaphore kennen gelernt, die innerhalb eines kritischen Abschnitts strengen wechselseitigen Ausschluss garantieren. Eine allgemeinere Form der Semaphore lässt eine gewisse feste Anzahl von Aktivitäten in einen kritischen Abschnitt hinein, bevor die Sperrwirkung eintritt. Wie können derartige Semaphore implementiert werden?

(1) P(semaphore s) {
(2) atomicBegin();
(3) if (s.state == used) {
(4) callingThread.enter(s.waitQ);
(5) callingThread.suspend();
(6) }
(7) s.stae = used;
(8) atomicEnd();
(9) }

(1) V(semaphore s) {
(2) atomicBegin();
(3) s.state == not used
(4) next = s.waitQ.leave();
(5) next.continue();
(6) atomicEnd();
(7) }


Frage 4: Wie viele Semaphore braucht man mindestens zur Lösung des allgemeinen Erzeuger/Verbraucher-Problems?

  • Mindestens 3 (wenn Synchronisation erreicht werden soll, ansonsten 1).


Frage 5: Wir haben Bedingungsvariable im Kontext Hoare'scher Monitore kennen gelernt. Ist ein derartiges Synchronisationsmodell (warten auf Erfüllung einer Bedingung) nicht auch außerhalb und losgelöst vom Monitormodell nützlich?
Falls ja, worauf müsste man in einem solchen Fall achten?

  • ja.
  • Man müsste selber darauf achten, das eine Bedingungsvariable in jedem Fall wieder freigegeben wird (vgl. Semaphore).


Frage 6: Wodurch sind die Mehrkosten eines Systemaufrufs im Vergleich zu einem regulären Prozeduraufruf bedingt?

  • Sie sind durch Privilegienwechsel, Parameteraufbereitung und Übergabe und den Interrupt bedingt


Frage 7: Für die Behandlung asynchroner Unterbrechungen (Interrupts) gibt es mehrere Modelle, u.A. auch das Modell des erzwungenen Prozeduraufrufs und das pop-up-Thread Modell.
Worin bestehen die Unterschiede bei diesen beiden Modellen?

  • Beim erzwungenen Prozeduraufruf wird der ablaufende Thread unterbrochen und in den Ablaufkontext der Unterbrechungsbehandlung versetzt (zB Änderung der Privilegierung), beim pop-up-Thread Modell wird zur Interruptbehandlung ein eigener Thread gestartet.

Diskussionsblatt 4

Frage 1: Vor welchen fehlerhaften Verhalten von Anwendungsprozessen schützen private virtuelle Adressräume?
Auf welche Weise üben Adressräume ihre Schutzfunktion aus?

  • Zugriff eines Prozesss auf fremden Speicher: Robustheitsproblem und Sicherheitsproblem
  • Jeder Prozess bekommt einen privaten, sehr großen Arbeitsspeicher (z.B. 2^64 adressierbare Speicherzellen) als Virtuellen Adressraum (VA) zugeordnet
  • VMM realisiert dies mit Hilfe der MMU: Abbildung virtueller Adressen auf physische Adressen: vmp: VAp -> PA


Frage 2: Warum ist es nur schwer möglich, schon während der Übersetzung eines Programmes dafür zu sorgen, dass es bei der Ausführung keine Speicherzugriffssünden begeht?

  • Programme können Speicher dynamisch (zB. in Abhängigkeit von Eingaben) allokieren, dies vorherzusehen ist sehr schwierig.


Frage 3: Welche Vorteile bringt die Möglichkeit der Relokation eines Prozesses? Kosten?

  • Relokation bringt die Möglichkeit mehrere Prozesse im Hauptspeicher zu halten und diese außerdem verschieben und vergrößern zu können.
  • Es entstehen entweder Kosten beim Programmstart, da Adresse aktualisiert werden müssen oder, je nach System, bei Speicherzugriffen, die mit Hilfe von Offsetregistern realisiert werden müssen.


Frage 4: Aus welchen Gründen kann es sinnvoll sein, zwei oder mehreren Prozessen gleichzeitig Zugriff auf einen gemeinsamen Speicherbereich zu geben?

  • Zu schnellen Komunikation zwischen den Prozessen


Frage 5: Aus welchen Grund ist ein Prozesswechsel in einem Betriebssystem mit Swapping basierter Speicherverwaltung in der Regel erheblich aufwändiger und langsamer im Vergleich zu einem System mit Paging basierter Speicherverwaltung?

  • Beim Swapping muss zuerst Platz für den neuen Prozess geschaffen werden, indem ein genügend großes Stück zusammenhängender(!), freier Speicher bereitgestellt wird, dies geschieht durch Relokation und Swapping, beides ist recht teuer. Beim Paging hingegen muss keine Relokation stattfinden, da Hauptspeicher idR. wahlfrei ist und die Seiten beliebig an freie Stellen verteilt werden können.


Frage 6: Warum ist eine optimale Paging-Strategie im Algemeinen nicht erreichbar?
Unter welcher speziellen Vorraussetzung geht dies dennoch?

  • man weiß nicht, bevor ein Prozess läuft, welche Seiten er nutzen wird. Somit kann man nicht genau vorher sagen, welche Seiten eingelagert werden müssen
  • Nur mit ausreichend großem Arbeitsspeicher oder einem "blick in die Zukunft" könnte eine optimale Paging-Strategie erreicht werden

(oder? ^^)


Frage 7: Wie viele Seitentabellen gibt es in einem laufenden Betriebssystem mit virtueller Speicherverwaltung? Benötigt ein E/A-Adressraum eine eigene Seitentabelle?

  • So viele wie es Prozessoren/Prozessorkerne gibt. Der E/A-Adressraum benötigt eine eigene Seitentabelle, wenn das BS Memory-Mapping nutzt. <-- ähm... gibt es nicht so viele Seitentabellen, wie es momentan laufende Prozesse gibt? Jeder Prozess hat doch seinen eigenen Adressraum. Mit der Anzahl der Prozessoren hat das doch nichts zu tun, man hat ja auch nur einen Arbeitsspeicher ;-) Und eine eigene Seitentabelle wird doch auch nicht benötigt; E/A-Adressen kann ich weder cachen noch auslagern, sie werden einfach an den PA "angehängt" und durch das Memory-Mapping entsprechend in die bestehenden Seitentabellen eingetragen... (oder nicht?)


Frage 8: Was ist die Arbeitsmenge (working set) eines Prozesses?
Wozu dient sie?
Zu welchen Zeitpunkten/ unter welchen Voraussetzungen stimmt sie mit der Menge der für einen Prozess eingelagerten Seiten (resident set) überein?

  • Die Arbeitsmenge bezeichnet die Seiten mit denen der Prozess im Moment arbeitet.
  • Sie dient dazu Seiten zu bestimmen, die nicht ausgelagert werden sollten.
  • Sie stimmen dann überein, wenn ein Prozess, innerhalb einer Zeit<=tau, immer wieder auf die gleichen Seiten zugreift (Hot Spot) und es, wegen einem vollen physischen Speicher notwendig geworden ist alle anderen Seiten des Prozesses auszulagern. Ansonsten kann eine Übereinstimmung auch vorliegen wenn ein Prozess nach seinem Start alle seine Seiten innerhalb einer Zeit<tau benutzt.


Frage 9: Welche Aufgabe hat die MMU?

  • Memory Management Unit
  • Umrechnung der virtuellen Adresse in eine physische Adresse. Wenn einer Virtuellen Adresse keine physische zugeordnet ist kommt es zu einem Seitenfehler und das BS kann die Daten aus dem Hintergrundspeicher laden.
  • Kann einzelne Speicherbereiche für die Ausführung von Code sperren (Speicherschutzaufgaben)


Frage 10: Wozu dient ein TLB (translation look-aside buffer)? Wann wird er von wem wozu benutzt?

  • In der MMU wird mit hilfe der Segment- und Seitentabellen die virt. in eine physische Adresse umgerechnet. Da dieser Vorgang sehr rechen- bzw zeitintensiv ist, benutzt man den Übersetzungpuffer um die Referenzen zu puffern.


Frage 11: Seitentabellen def. für einen virtuellen Adressraum die Abbildung virtueller auf physische Adressen. Je nach Adressraumgröße können die Seitentabellen ebenfalls sehr groß werden. Mit diesem Problem gehen mehrstufige Seitentabellen um.
Gegeben sei die folgende Aufteilung einer virtuellen (32bit-) Adresse für ein zweistufiges Abbildungsverfahren:


31                                      0


P1 P2 Offset

 10 Bit      10 Bit      12 Bit

P1: Seitentabellenindex 1. Stufe
P2: Seitentabellenindex 2. Stufe

a) Wie groß ist die Seitentabelle?
Wie groß die Seitenrahmen- bzw Kachelgröße?

  • Die Seitentabelle ist 2^10+2^20 Einträge groß. (ohne Berücksichtigung von nicht verwendeten Seiten)
  • Die Seitenrahmen- bzw. Kachelgröße ist 2^12Byte=4096Byte.

b)Um welchen Faktor reduziert sich die Größe der Seitentabelle, die ständig im Hauptspeicher zu halten ist, bei einem zweistufigen Seitentabellenverfahren gegenüber einer einstufigen Seitentabelle?

  • Sie reduziert sich um den Faktor 2^10 (zweite Stufe auf den Hintergrundspeicher.

c) Welche Größe haben die Seitentabellen bei einstufigen bzw zweistufigen Verfahren bei einer Eintragsbreite von jeweils 4 Byte?

  • einstufig: 2^20*4Byte
  • zweistufig: (2^20+2^10)*4Byte


Frage 12: Bei einer Seitengröße von 8KByte und einem virtuellen Adressraum der Größe 2^64: Wie groß wäre eine einstufige, nicht inv. Seitentabelle eines Prozesses, wenn jeder Seiteneintrag in der Tabelle 32 Bit (2² Byte) groß ist?

  • 8KByte=2^13Byte, also 2^64/2^13=2^51 Einträge in der Seitentabelle. 2^51*4Byte=8.388.608GigaByte! - Größe der Seitentabelle.

Diskussionsblatt 5

Frage 1: Warum gibt es hierarchische Namensräume?

  • Sie werden ab einer bestimmten Speichergröße notwendig, um die Übersicht zu behalten.


Frage 2: Welche Kriterien spielen bei der Wahl der Ablageform der Rohdaten einer Datei (zusammenhängend vs. gestreut) eine wesentliche Rolle?

  • Die Anwendung spielt eine wesentliche Rolle, bei zusammenhängender Platzierung erhält man zB. bessere Echtzeiteigenschaften, außerdem ist der sequenzielle Datenzugriff deutlich beschleunigt. Andererseits ist das Wachsen und Löschen bei dieser Strategie problematisch. Deshalb sollte man bei Anwendungen mit vielen Schreibzugriffen auf verstreute Platzierung setzen, auch weil die Defragmentierung bei dieser Variante unproblematischer ist.


Frage 3: Welche Kriterien spielen bei der Wahl von Platzierung und Layout der Management-Datenstrukturen (I-Nodeliste, Freiliste) auf einem persistenten Speichermedium eine wesentliche Rolle?

  • Die Zugriffszeiten, da diese davon abhängig sind wo die Listen gespeichert wurden. Bzgl. Layout siehe Frage 5 und 6.

Frage 4: Welche Vor- und Nachtteile hat es,

• den Superblock

• die I-Nodeliste

• die Freiliste

auf einem Speichermedium redundant anzulegen?

  • Nachteile sind ein höherer Speicherverbrauch und geringere Performanz durch doppelte Aktualisierungen, ein Vorteil ist, dass Inkonsistenzen erkannt und behoben werden können. Dies gilt aber nicht für den Superblock. Da er nach der Erstellung des Dateisystems nicht mehr verändert wird, sollten hier keine Inkonsistenzen auftreten. Er könnte aber trotzdem anderweitig beschädigt werden. Insgesamt fördert eine redundante Speicherung die Robustheit und ermöglicht eine Reparatur des Dateisystems.


Frage 5: Welche Vor- und Nachteile hat es, wenn I-Nodes nicht in einer zusammenhängenden Tabelle, sondern jeweils in den Verzeichnissen direkt bei ihren Dateinamen platziert sind?

  • Vorteil: schnellerer Zugriff vom I-Node auf die Datei (bei nich wahlfreiem Speicher, zB HDD).
  • Nachteil: sehr aufwändige Suche der einzelnen I-Nodes, es sei denn man speichert die konkrete Adresse der I-Nodes beim Verzeichnis.


Frage 6: Welche Vor- und Nachteile hat es, wenn Verzeichnisse dicht bei der I-Nodetabelle platziert sind?

  • Vorteil: geringe Zugriffszeit zwischen I-Node und Verzeichnis.
  • Nachteil: hohe Zugriffszeit zwischen Verzeichnis und Datei (sie liegt tendenziell recht weit entfernt).


Frage 7: Was ist ein Filepointer?
Wie viele davon gibt es pro Datei?

  • Ein Filepointer ist ein Zeiger auf die aktuelle "Arbeitsposition" in einer geöffneten Datei.
  • Pro Filehandle gibt es nur einen, da man eine Datei aber (theoretisch) beliebig oft öffnen kann, sind es beliebig viele.


Frage 8: Angenommen, die Blockadressen in den I-Nodes und indirekten Adressblöcken eines Dateisystems wären 32 Bit groß, und die Blockgröße des Dateisystems sei 8 KByte; wie groß ist dann die maximale Größe dieses Dateisystems (in Byte)?

  • Etwa 3.5*10^13Byte, das entspricht 32TB. (Rechnung: Anzahl mögliche Adressen: (2^32) multipliziert mit Blockgröße)


Frage 9: Welche negativen Folgen kann das unkontrollierte Entfernen eines persistenten Speichermediums oder auch ein plötzlich auftretender Systemhalt besitzen?

  • Beschädigung des Speichermediums (abhängig von der Art der Entfernung)
  • Unvollständige Lesevorgänge (kann sogar Systemabsturz verursachen -> Swap-Datei/-Partition!)
  • Unvollständige Schreibvorgänge von Nutzdaten -> fehlerhafte Dateien
  • Unvollständige Schreibvorgänge von Metadaten -> inkonsistentes Dateisystem