Klausurvorbereitung Betriebssysteme

Beschreibung

Informatik Karteikarten am Klausurvorbereitung Betriebssysteme, erstellt von Sergej Seifert am 09/12/2018.
Sergej Seifert
Karteikarten von Sergej Seifert, aktualisiert more than 1 year ago
Sergej Seifert
Erstellt von Sergej Seifert vor fast 6 Jahre
871
0

Zusammenfassung der Ressource

Frage Antworten
Was sind die Aufgaben der Speicherverwaltung? - Effiziente Verwaltung des Hauptspeichers - Prozesse zuteilen und anschließend freigeben
Welcher Teil eines Rechensystems ist für die Verwaltung von: 1. primärem Cache 2. sekundärem Cache 3. Arbeitsspeicher 4. Festplatte zuständig? 1. Rechnerarchitektur 2. Rechnerarchitektur 3. Betriebssystem 4. Betriebssystem
Welche Nachteile haben Rechensysteme ohne Speicherabstraktion? - Keine Parallelität - Es handelt sich um ein instablies System, da fehlerhafte Zugriffe auf den Speicher auch Auswirkungen auf das Betriebssystem haben können - (Zer)Störung des Betriebssystems - mehrere Programme gleichzeitig im Speicher erfordern hohen Verwaltungsaufwand
Existieren Rechensysteme ohne Speicherabstraktion heutzutage noch? Ja: 1. Eingebettete Systeme 2. Haushaltsgeräte
Was ist abstrakter Speicher? Speicher, der für jeden Prozess an der gleichen Adresse beginnt und in ausreichender Größe immer vorhanden ist.
Was ist das Relokationsproblem? - Nur ein Problem, wenn sich mehr als ein Programm im Hauptspeicher befindet - Anpassen von Speicheradressen während des Ladens notwendig - Adressen im Programm werden als relativ oder absolut markiert, absolute Adressen müssen neu berechnet werden
Welche Probleme bereitet das Swapping? Das Auslagern ganzer Prozesse ist zeitintensiv. Für große Prozesse im mSek-Bereich. Zudem muss der Speicher verdichtet werden.
Was sind die Nachteile der Speicherverwaltung mittels Bitmaps? Gibt es einen effizienteren Weg? Bitmaps sind groß und belegen somit viel Speicher. Die Suche nach freien Seiten muss die gesamte Bitmap durchsuchen.
Erläutern Sie die folgenden Strategien zum Auffinden freier Speicherblöcke: 1. First Fit 2. Next Fit 3. Best Fit 4. Worst Fit 1. Erste passende Lücke wird verwendet 2. Nächste passende Lücke wird verwendet (ausgehend von der letzten Lücke) 3. Lücke mit geringsten Verschnitt wählen. 4. Lücke mit brauchbarem Verschnitt wählen, indem immer die größte Lücke genutzt wird.
Wozu dienen Basis und Limitregister? Basisresgister: Offset für alle Speicherzugriffe Limitregister: zur Realisierung des Speicherschutzes, enthält die Größe des Speicherbereichs
Der Intel 8086-Prozessor unterstützte keinen virtuellen Speicher. Trotzdem wurden früher Systeme verkauft, die eine nicht modifizierte 8086-CPU enthielten und mit Paging arbeitetet. Wie konnte dies funktionieren? Sie bauten eine MMU auf und bauten diese zwischen der 8086 und dem Bus ein. Auf diese Art wurden alle physikalischen Adressen der 8086 in die MMU als virtuelle Adressen übertragen. Die MMU bildete sie dann auf physikalische Adressen ab, die zum Bus übertragen wurden.
Erläutern sie die folgenden begriffe aus dem Bereich paging: 1. Seiten 2. Seitenrahmen 3. Seitentabellen 1. Adressraum ist in Einheiten gleicher Größe aufgeteilt. 2. Physischer Speicher ist in Einheiten gleicher Größe aufgeteilt. 3. Verwalten Zuordnung zwischen Seiten und Seitenrahmen.
Gibt es beim Paging mehr Seiten oder mehr Seitenrahmen? Mehr Seiten.
Erläutern Sie den Aufbau eines Eintrags der Seitentabelle. 1. Present/Absent-Bit stellt dar, ob eine Seite physikalisch verfügbar ist. 2. Caching-Bit gibt an, ob Speicherzugriffe gecacht werden (darf nicht geschehen, wenn hinter der Adresse in Wirklichkeit Ein-/Ausgabeeinheiten stehen) 3. Protection-Bits (1 Bit = Lese/schreibrechte oder 3 Bit = Schreibrecht, Leserecht, Ausführungsrecht) 4. M-Bit (Modified, dirty bit) wird von MMU gesetzt, wenn die Seite modifiziert wurde, wird vom BS zurückgesetzt, wenn Seite auf Festplatte geschrieben wurde 5. R-Bit (referenced) wird bei jedem Zugriff (Lesen/Schreiben) von der MMU gesetzt und wird vom BS gelesen und nach bestimmten Strategien zurückgesetzt 6. Die Seitentabelle enthält keine Informationen über Adresse der ausgelagerten Seite auf der Festplatte 7. Aufbau der MMU in Hardware 8. Umsetzung von virtuellen Adressen in physikalische 9. Betriebssystem nutzt eigene Tabellen zur Speicherung der Adressen ausgelagerter Seiten auf der Festplatte.
Ein Computer mit 32-Bit-Adressen benutzt eine zweistufige Seitentabelle. Virtuelle Adressen werden in ein 9-Bit-Feld für die erste Seitentabelle, 11 Bit für die zweite Seitentabelle und einen Offset unterteilt. Wie viele Seiten sind im Adressraum und wie groß sind sie? Zwanzig Bit werden für die virtuellen Seiten verwendet, 12 Bit werden für den Offset verwendet. Dies führt zu 4 kByte großen Seiten. Zwanzig Bits für die virtuellen Seite impliziert 2^20 Seiten.
Eine virtuelle 32-Bit-Adresse wird in die vier Teile a, b, c und d aufgeteilt. Die ersten drei Felder sind die Indizes für eine dreistufige Seitentabelle. Das vierte Feld d ist der Offset. Hängt die Anzahl der Seiten von der Länge aller vier Felder ab? Wenn nein, welche Felder sind unwichtig? Die Anzahl von Seiten hängt von der Gesamtzahl von Bits in a, b und c ab. Wie sie über die Felder verteilt sind, ist nicht wichtig.
Eine Maschine hat virtuelle 48-Bit-Adressen und physische 32-BitAdressen. Wie viele 8-KB-Seiten sind in der Seitentabelle? Mit 8 kByte großen Seiten und ein 48-Bit virtuellen Adressraum ist die Anzahl der virtuellen Seiten ist 2^48 /2^13, was 2^35 (etwa 34 Milliarden) ist.
Der TLB enthält keinen Eintrag für das r-Bit. Warum nicht? Allein die Anwesenheit einer Seite im TLB bedeutet, dass sie referenziert wurde
Ein Student in einem Compilerkurs schlägt als Projekt vor, einen Compiler zu schreiben, der eine Liste von Seitenreferenzen erzeugt, die benutzt werden kann, um den optimalen Seitenersetzungsalgorithmus zu implementieren. Ist das möglich? Begründen Sie ihre Antwort. Dies ist nur unter den sehr ungewöhnlichen und nicht sehr sinnvollen Beispiel eines Programms möglich, dessen Verlauf der Ausführung zu Kompilierzeit vollständig voraussagbar ist. Da Programme aber auf nicht voraussagbare Benutzerinteraktionen reagieren, kommt dies eher selten vor.
Auf allen derzeit verfügbaren Computern werden zumindest Teile der Interruptroutinen in Assembler geschrieben. Warum? Im Allgemeinen ermöglichen höhere Programmiersprachen die nötige Art von Zugriff auf die CPU-Hardware nicht. Zum Beispiel kann es nötig sein, dass eine Unterbrechungsbehandlung die Unterbrechung für ein spezielles Gerät aktiviert und inaktiviert, oder Daten innerhalb des Stapels eines Prozesses manipuliert. Außerdem müssen Unterbrechungen so rasch wie möglich abgearbeitet werden.
Wenn ein Interrupt oder ein Systemaufruf die Kontrolle an das Betriebssystem übergibt, wird im Allgemeinen ein Kernel-Stack benutzt, der nicht im Stack des unterbrochenen Prozesses liegt. Warum? Es gibt mehrere Gründe dafür, einen separaten Stack für den Kern zu verwenden. Zwei von ihnen lauten wie folgt. 1. wollen Sie nicht, dass das Betriebssystem abstürzt, wenn ein schlecht geschriebenes Benutzerprogramm nicht genug Kellerspeicher erhält. 2. könnte ein feindlicher Prozess die Stapeldaten im Speicherplatz eines Benutzerprogramms nach dem Rücksprung von einem Systemaufruf durchsuchen und die Daten des anderen Prozesses verwenden, um Information über den Anderen zu finden.
Wenn sich ein Prozess, der aus mehreren Threads besteht, aufspaltet, dann gibt es ein Problem, wenn alle Kindprozesse Kopien der Threads des Elternprozesses mitbekommen. Angenommen, einer der ursprünglichen Threads wartet auf eine Tastatureingabe. Jetzt warten zwei Threads auf eine Tastatureingabe, einer in jedem Prozess. Kann dieses Problem auch in Prozessen auftreten, die nur aus einem einzigen Thread bestehen? Nein. Wenn ein Prozess mit einem Thread aufgrund der Tastatureingaben blockiert ist, kann er keinen neuen Prozess erzeugen.
Welches ist der größte Vorteil der Implementierung von Threads im Benutzeradressraum? Welches ist der größte Nachteil? Der größte Vorzug ist dabei die Effizienz. Es sind keine Unterbrechungen in den Kern nötig, um Threads umzuschalten. Der größte Nachteil ist, dass das Blockieren eines Threads den gesamten Prozess lahmlegt.
Wie können Semaphoren realisiert werden: • In einem Betriebssystem, das Interrupts ausschalten kann? • mittels einer atomaren Operation? Während der Operation P(S) alle Interrupts abschalten und danach sofort wieder einschalten. Passenden Assemblerbefehl verwenden, z. B. TSL
Ein Schnellimbiss hat vier Arten von Angestellten: • Bedienungen, die die Bestellung der Kunden aufnehmen • Köche, die das Essen zubereiten • Packer, die das Essen in Tüten einpacken • Kassierer, die den Kunden die Tüten geben und das Geld entgegennehmen Jeder Angestellte kann als eine Art kommunizieren, sequenzielle Prozess betrachtet werden. Welche Art von Kommunikation benutzen Sie? Setzen Sie dieses Modell in Beziehung zu Prozessen in Unix. Die Angestellten kommunizieren durch Übermittlung von Nachrichten: Bestellungen, Nahrung und Tüten in diesem Fall. In UNIX sind diese vier Prozesse mit Pipes verbunden.
Kann durch das analysieren des Quellcodes ein Maß dafür angegeben werden, ob der Prozess voraussichtlich rechenintensiv oder Ein-/Ausgabeintensiv ist? Wie lässt sich das zur Laufzeit bestimmen? In einfachen Fällen kann es möglich sein, zu bestimmen, ob Ein/Ausgabe ein beschränkender Faktor ist, indem man den Quellcode analysiert. Denken Sie beispielsweise an ein Programm, das all seine Eingabedateien zu Beginn in einen Puffer einliest. Dieses wird wahrscheinlich nicht Ein/Ausgabebeschränkt sein. Aber ein Programm, das permanent in unterschiedliche Dateien schreibt, wie etwa ein Compiler, wird wahrscheinlich Ein/Ausgabe gebunden sein. Wenn das Betriebssystem eine Funktion wie den UNIX Befehl ps bietet, der Ihnen die von einem Programm verwendete CPU-Zeit anzeigen kann, können Sie diesen Wert mit der Gesamtzeit bis zur Beendigung des Programms vergleichen. Dies ist natürlich nur auf einem System sinnvoll, auf dem Sie der einzige Benutzer sind.
Fünf Aufgaben warten darauf, ausgeführt zu werden. Die erwarteten Laufzeiten sind 9, 6, 3, 5 und X. In welcher Reihenfolge sollten Sie abgearbeitet werden, um die durchschnittliche Antwortzeit zu minimieren? Ihre Antwort wird von X abhängig sein. Shortest Job First ist das Verfahren, bei dem die durchschnittliche Antwortzeit reduziert wird. • 0 < X ≤ 3: X, 3, 5, 6, 9. • 3 < X ≤ 5: 3, X, 5, 6, 9. • 5 < X ≤ 6: 3, 5, X, 6, 9. • 6 < X ≤ 9: 3, 5, 6, X, 9. • X > 9: 3, 5, 6, 9, X.
Warum kann die Lösung von Petterson die Probleme des strikten Wechsels beheben? Weil ein Prozess anmelden muss, ob er überhaupt in den geschützten Bereich eintreten will. Ist das nicht der Fall, muss der zweite Prozess nicht warten.
Was ist ein Prozess? Ein Prozess ist die Instanz eines Programms in Ausführung: - Befehlszähler - Inhalte der Register - Belegung von Variablen - zugewiesenem Speicher (Programm, Daten) - Zustandsinformationen (offene Dateien, Threads, ...)
Was ist ein Programm? Programm ist: - Benutzerprogramm - Systemprogramm - Dienst
Was ist Parallelität? - Multiprogrammierung (ausnutzen von E/A-Wartezeiten) - Multitasking (Zeitscheiben)
Was ist Pseudoparallelität? - Jeder Prozess besitzt seine eigene virtuelle CPU - die virtuelle CPU wird kurzzeitig zur physikalischen CPU - Dauer: einige mSek - 100 mSek - Kontextwechsel geschehen einige hundertmal pro Sekunde - Es entsteht der Eindruck von merheren, gleichzeitig laufenden Programmen
Welche zwei Aspekte besitzt ein Prozess? 1. Einheit des Ressourcenbesitzes - eigener (virtueller) Adressraum - allgemein: Besitz / Kontrolle von Ressourcen - BS übt Schutzfunktion aus 2. Einheit der Ablaufplanung / Ausführung - Ausführung folgt einem Weg (Trace) durch ein Programm - Verzahnt mit der Ausführung anderer Prozesse - BS entscheidet über Zuteilung des Prozessors
Nennen Sie einige Eigenschaften des PCB (Prozess Control Block) - Identifikator (Prozess-ID) - Zustand (bereit, laufend, blockiert, ...) - Priorität (relativ zu anderen Prozessen) - Programmzähler - Kontext (Kopie der CPU-Register, d.h. Statusregister, Universalregister, ...) - Speicherabbild (Zeiger auf Text-, Daten- und Stacksegment) - I/O Zustandsinformationen, u.a: • offen I/O-Anfragen, • I/O-Geräte, die dem Prozess zugeordnet sind, • geöffnete Dateien - Allgemeine Verwaltungsinformationen • genutzte Ressourcen (z.B. CPU-Zeit) • maximal verfügbare Ressourcen
Wo liegt die Position des PCB im Speicher? - PCB ist im Adressraum - PCB ist nur für Kernel zugreifbar - Text enthält das ausführbare Programm
Es gibt zwei Arten von Systemen, einfache und komplexe. Wie wird die Prozesserzeugung in dem jeweiligen System behandelt? Einfache Systeme: - häufig nur ein Prozess, der beim Start erzeugt wird und auf Benutzeranfragen reagiert - eingebettete Systeme (Mikrowelle, Waschmaschine, TV, ...) Komplexe Systeme: - Mehrere Prozesse - Erzeugung durch: • Initialisierung des Systems • Systemaufrufe, die neuen Prozess erzeugen • Benutzeranfragen, die neuen Prozess erzeugen • Stapelverarbeitung, die neue Prozesse erzeugt
Welche drei Arten der Prozesserzeugung gibt es? 1. Prozessverkettung (chaining): - Laufender Prozess startet einen neuen Prozess und terminiert sich damit selbst 2. Prozessvergabelung (forking): - Laufender Prozess startet einen neuen Prozess, läuft selbst aber weiter. 3. Prozesserzeugung (creation): - Laufender Prozess startet einen unabhängig neuen Prozess (Variante der Prozessvergabelung)
Welche Mechanismen zur Übergabe von Daten bei Prozesserzeugung gibt es? 1. Vererbung: - Der neue Prozess erhält alle Daten des aktuellen Prozesses, d.h. eine Kopie dieser Daten. - Dazu müssen sich beide Prozesse aber den gleichen Programmcode teilen (nur bei Fork möglich) 2. Parameter: - Dem neuen Prozess werden über den Aufruf zur Erzeugung Parameter übergeben. - Dies wird bei Threads verwendet.
Was ist ein Seiteneffekt bei Prozessen und welche Ursachen kann dieser haben? Ein Seiteneffekt tritt unvorhergesehen bzw. nicht sehr leicht zu erkennen auf und kann somit leicht zu Unvorhergesehenem führen. Ursachen: 1. write () ist nicht gepuffert • wird vor fork() aufgerufen • wird direkt ausgegeben 2. Standard I/O Bibliothek ist gepuffert • wird von fork() aufgerufen • Pufferverhalten •• zeilenweise, falls mit Terminal verbunden. "\n" führt zum Leeren des Puffers •• voll gepuffert. Daher liegt im zweiten Fall "before fork" noch im Puffer, der mit kopiert wird und somit für beide Prozesse ausgegeben wird.
Es gibt zwei Arten von Systemen, einfache und komplexe. Wie wird das Beenden von Prozessen in dem jeweiligen System behandelt? Einfache Systeme: - Beendigung des Prozesses durch Abschalten des Gerätes. Komplexe Systeme: - Normales Beende (freiwillig) - Beenden aufgrund eines Fehlers (freiwillig) - Beenden aufgrund eines schwerwiegenden Fehlers (unfreiwillig) - Beenden durch einen anderen Prozess (unfreiwillig)
Geben Sie Beispiele für die Terminierungsarten von Prozessen. 1. Normales Beenden (freiwillig) • Programm beendet sich selbst; Benutzer beendet Programm 2. Beenden aufgrund eines Fehlers (freiwillig) • Kommandozeilenprogramme, Date nicht gefunden; weniger bei GUI-Programmen 3. Beenden aufgrund eines schwerwiegenden Fehlers (unfreiwillig) • Programmierfehler (Speicherverletzung, /0, unzulässiger Befehl) • wird z. T. durch Exceptions unterlaufen 4. Beenden durch einen anderen Prozess (unfreiwillig) • kill(); kill -9; TerminateProcess() • Berechtigungen müssen existieren
In welchen drei Zuständen kann sich ein Prozess befinden? 1. Rechnend 2. Blockiert 3. Rechenbereit
Was ist der Unterschied zwischen: 1. Rechenbereiten Prozess 2. Blockierten Prozess? 1. Prozess verfügt über alle Betriebsmittel 1. Scheduler entzieht Prozess die CPU. 2. Prozess verfügt nicht über alle Betriebsmittel 2. Fehlende Eingabe 2. Fehlende Ressource
Stellen Sie das Modell eines "idealen" Betriebssystems dar. 1. Jeder Prozess wird gleich behandelt, egal wie er entstanden ist • Systemaufrufe, die neuen Prozess erzeugen • Benutzeranfragen, die neuen Prozess erzeugen • Stapelverarbeitung, die neue Prozesse erzeugt 2. Scheduler kümmert sich um • Starten von Prozessen • Anhalten von Prozessen • Interrupts von Hardware 3. Prozesse • bilden den Rest des Betriebssystems
Nennen Sie den Verlauf des speziellen Prozesses "Interrupt". - werden extern angestoßen • Interruptleitungen • Timer 1. Hardware sichert Register (PC, SP) 2. Hardware holt neuen Befehlszähler vom Interruptvektor 3. Assemblerprozedur sichert alle weiteren Register 4. Assemblerprozedur richtet neuen Stack ein 5. Interruptroutine startet und führt notwendige E/A durch 6. Scheduler sucht nächsten Prozess 7. Interruptroutine beendet sich, spring zum Assemberprogramm zurück 8. Neuer Prozess wird gestartet
Welche Werkzeuge bietet Windows zur Steuerung von Prozessen? Benennen Sie die wichtigsten Optionen. 1. Prozesse starten --> start 2. Prozesse anzeigen --> tasklist 3. Prozesse beenden --> taskkill
Nennen Sie die Motivation für Threads. 1. Prozesserzeugung, Prozessumschaltung und Prozesskommunikation sind teuer ( = rechenzeitaufwendig zur Laufzeit) 2. Wie nutzt man mehrere Prozessoren eines Multiprozessors für eine Applikation? 3. Wie strukturiert man z.B. einen Server-Prozess, der Anforderungen mehrerer Klienten bedienen kann?
Vergleichen Sie Prozesse und Threads Prozess: - Jeder Prozess hat 1. einen separaten Adressraum und einen 2. eigenen Kontrollfluss und 3. kann somit zunächst völlig isoliert von anderen Prozess agieren. 4. Fassen Ressourcen zusammen. Threads: 1. Ein Thread ist ein Ausführungsweg innerhalb eines Prozesses. 2. Es kann einen oder auch mehrere Threads in einem Prozess geben. 3. Ein Thread enthält andere Elemente. 4. Einheiten, die für die Ausführung auf der CPU verwaltet werden
Welche Elemente enthält ein Thread? • Zustand: aktiv, bereit, etc. • Kontext: Programmzähler, Stackpointer, Framepointer, etc. • Stack: Für lokale Variablen von Prozeduren (Funktionen, Methoden) • Speicherplatz: Für Thread-lokale Variablen • Zugriff auf die Ressourcen des Prozesses
Was hat der Stack eines Threads für eine Bedeutung? Jeder Thread verfügt über eigenen Stack 1. Argumente des Aufrufs 2. Rücksprungadresse 3. Kann eigene Aufrufhierarchie aufbauen
Nennen Sie Vor- und Nachteile von der Verwaltung von Threads durch Prozesse. - Jeder Prozess hat eigene Threadtabelle Vorteile: 1. Sehr schnelle Threadwechsel ohne Kontextwechsel 2. Individuelle Scheduling-Algorithmen können eingesetzt werden Nachteile: 1. Alle Threads werden bei E/A-Warten blockiert. 2. Threads müssen Prozessor freiwillig abgeben.
Nennen Sie Vor- und Nachteile von der Verwaltung von Threads durch den Kernel. Vorteile: 1. kontrolliert vom Betriebssystem 2. eine Thread-Tabelle 3. E/A ist thread-unabhängig Nachteile: 1. Threadwechsel aufwendig 2. Threaderzeugung und –beendigung aufwendig da nur durch Betriebssystemfunktionen realisierbar
Nennen Sie problematische und unproblematische Eigenschaften von Threadsicherheit. Unproblematisch: 1. lokale Variablen 2. Funktionsparameter Problematisch: 1. globale Variablen 2. Zeitpunkt des Zugriffs ist bei mehreren Threads unbekannt 3. Was geschieht beim Wiedereintritt nach Threadwechsel?
Nennen Sie Verwendungsgebiete von Threads. 1. Responsivität der Benutzeroberfläche: die grafische Oberfläche soll bedienbar bleiben, während im Hintergrund eine rechenintensive Aktivität ausgeführt wird 2. Asynchrones Warten: Überbrückung von Wartezeiten, z.B. bei der asynchronen Ein- und Ausgabe, indem andere Aktivitäten fortgeführt werden. Webbrowser: Daten empfangen und Webseite rendern 3. Trennung von Teilaufgaben: Voneinander unabhängige Aktivitäten sollen implementiert werden (Sound, Animation, Logik bei einem Computerspiel) 4. Bei Mehrkernsystemen: Threads bilden die kleinste Einheit paralleler Aktivität. Aufgaben können zur Geschwindigkeitssteigerung parallelisiert werden
Nennen Sie einige Beispiele für Threads in Windows. 1. Windows Threads • Multithreading im Systemkern (Kernel Threads) • Thread-Wechsel durch Scheduler 2. Windows Fibers • Multithreading im Benutzermodus (User Threads) • Fibers laufen innerhalb eines Threads • Fiber-Wechsel durch Applikation selbst programmiert 3. Einsatzbereiche: • schnellere Fiber- als Thread-Umschaltung (falls keine blockierenden Systemfunktionen vorhanden sind) • Portierung von Unix-Applikationen mit user level threads • Koroutinenprogrammierung: Koroutinenwechsel unter Anwendungskontrolle
Wie verhält sich ein Thread-basierter Webserver bei: 1. Multi-Threading? 2. Single-Threading? 1. Zugriff auf Festplatte löst Blockieren aus • Blockieren eines Threads wird genutzt, um andere Threads weiterlaufen zu lassen • Mittlere Antwortzeit ist klein 2. Zugriff auf Festplatte löst Blockieren aus • Blockieren wird der gesamte Prozess • Mittlere Antwortzeit ist hoch
Was sind Aufgaben der Interprozesskommunikation? - Englisch bezeichnet als Inter Process Communication (IPC) - Wird oft als Oberbegriff für Synchronisation und Kommunikation zwischen Prozessen & Threads verwendet
Erklären Sie folgende Begriffe: 1. Synchronisation 2. Kommunikation 1. Bei der Synchronisation geht es um die zeitliche Abstimmung zwischen Prozessen, d.h. es wird durch den Betriebssystemmechanismus keine oder nur marginale Mehrinformation übertragen 2. Bei der Kommunikation findet oft auch eine Synchronisation statt. Der Hauptzweck liegt jedoch im Austausch von Informationen zwischen den Prozessen.
Was ist POSIX? API-Standard für alle Unix-Varianten (Portable Operating System Interface)
Nennen Sie Eigenschaften der Unix-Pipes - Zwei Arten: • mit Namen (named pipe) oder • namenslos (unnamed pipe) - Normalerweise unidirektional - Datenpufferung nach FIFO Prinzip - Puffergröße zwischen 0,5 und 5 KB. - Prozesssynchronisation mittels Blockierung • bei voller Pipe beim Schreiben • bei leerer Pipe beim Lesen - Programmierung analog zu Dateien (Arbeiten mit Byteströmen, byte streams)
Nennen Sie Eigenschaften der Namenlosen Pipes (unnamed pipes) • Verbindet zwei Prozesse unidirektional • Pipe wird von Vorgängerprozess erzeugt (Kommunikation nur zwischen verwandten Prozessen möglich) • Dateideskriptoren des Pipe-Ein- und Ausgangs werden durch Vererbung erhalten (nicht verwendete Enden sollten stets mit close() geschlossen werden) • Anwendung: überall, wo gemeinsamer Vorgängerprozess vorhanden ist • Vorteil: Pipe muss bei Prozessende nicht leer sein
Wo werden namenlose Pipes verwendet? Kommandoverknüpfung in Unix • Beispiel 1: who | grep www • Beispiel 2: ls | sort
Nennen Sie Eigenschaften von Benannten Pipes (names pipes, FIFOs) • Tragen einen Namen, der im Dateisystem erscheint - virtuelle Datei - nur Metainformationen - keine Inhalte • Verbindet zwei Prozesse unidirektional • Pipe kann von beliebigem Prozess erzeugt werden • Pipe trägt Unix Standard-Dateirechte • Jeder Prozess, der Pipe-Name kennt und berechtigt ist, kann Pipe nutzen • Anwendung: überall, wo es keinen gemeinsamen Vorgängerprozess gibt • Nachteil: muss bei Prozessende aufgeräumt werden (Löschen des Verzeichniseintrags)
Warum sollte eine Synchronisation zwischen Prozessen und Threads stattfinden? • Prozesse und Threads müssen untereinander kommunizieren • Mehrere Formen der Kommunikation sind zu unterscheiden • Austausch von Daten • Wechselseitige Ausschluss, so dass Prozesse und Threads bei der gemeinsamen Nutzung von Daten keine inkonsistenten Zustände auftreten können (Beispiel Sitzplatzbuchung: Sitzplätze werden doppelt vergeben) • Prozessabhängigkeiten bei dem Produzieren und Konsumieren von Daten berücksichtigen
Was ist eine Race Condition und wann tritt diese auf? In einem nebenläufigen System greifen mehrere Prozesse/Threads unkoordiniert auf eine gemeinsame Ressource zu. Das Ergebnis ist in diesem Fall abhängig von der Reihenfolge in der Prozesse/Threads zugreifen und diese ist nicht deterministisch.
Was ist ein kritischer Abschnitt (critical region)? Das ist der Teil eines Prozesses/Threads, der auf gemeinsam genutzte Ressourcen zugreift. Befinden sich zwei um eine Ressource konkurrierende Prozesse/Threads niemals gemeinsam in ihren kritischen Regionen, dann lassen sich race conditions vermeiden.
Was ist ein Wechselseitiger Ausschluss (mutual exclusion)? Prozesse/Threads müssen synchronisiert werden, so dass die gleichzeitige, gemeinsame Nutzung von Ressourcen vermieden wird.
Nennen Sie die 4 Prinzipien der Synchronisation. 1. Nur ein Prozess/Thread darf sich zu einem Zeitpunkt in seinem kritischen Abschnitt befinden. 2. Es dürfen keine Annahmen über die Ausführungsgeschwindigkeit oder die Anzahl der Prozessoren gemacht werden. 3. Kein Prozess/Thread, der sich nicht in seinem kritischen Abschnitt befindet, darf andere Prozesse blockieren. 4. Kein Prozess/Thread soll ewig darauf warten müssen in seinen kritischen Abschnitt einzutreten.
Erklären Sie das Busy Waiting. • Bei dieser Lösung wird eine gemeinsam benutzte Variable (Sperrvariable, Lock) mit false initialisiert. • Wenn ein Prozess in den kritischen Bereich eintreten will, ließt er die Variable: - Ist der Wert false, setzt er die Variable auf true und tritt in den kritischen Bereich ein. - Ist der Wert true wartet er, bis der Wert false ist • Nachteil: Aktives Warten kostet Rechenzeit
Was ist TSL? Test and Set Lock. • Zugriff auf den Speicher, wobei der Speicherbus gesperrt wird, • d.h. kein anderer Zugriff z.B. durch eine andere CPU kann erfolgen.
Was ist Schlafen und Aufwecken im Hinblick auf die Synchronisation? • Vermeidung des busy waitings durch Betriebssystemfunktionen: • sleep() – Prozess legt sich schlafen • wakeup(id) – Prozess mit bestimmter ID wecken • kann zur Prioritätsumkehr führen, wenn Prozess L mit niedriger Priorität eine Ressource besitzt, die Prozess H mit hoher Priorität benötigt. Da H immer Rechenzeit bekommt, wird L die Ressource nie freigeben können. H wartet endlos (L auch).
Was ist ein Spinlock? • Semaphore, die mittels busy waiting implementiert sind. • Dies vermeidet den Kontextwechsel, das Schlafenlegen und das Wecken eines Threads (Kerneloperationen). • Verfeinerungen des Spinlock sehen vor, dass nur eine begrenzte Zeit gewartet wird und dann der Thread schlafen gelegt wird bzw. mit yield() die verbleibende Zeitscheibe an den nächsten Thread gegeben wird. • Spinlocks lohnen sich bei kurzen Wartezeiten
Erklären Sie Lese-/Schreibsperren in Bezug auf die Synchronisation und Race Conditions • Motivation: Wechselseitiger Ausschluss ist nur erforderlich, wenn neben Schreibzugriffen auf eine Ressource weitere Zugriffe (lesend oder schreibend) erfolgen. • Idee: Tritt ein Thread in einen kritischen Abschnitt ein, teilt er die Art des Zugriffs mit: lesend oder schreibend. Schreibzugriffe sind exklusiv, Lesezugriffe hingegen nicht, d.h. mehrere Threads können parallel lesen. • Problem ist, dass schreibende Threads nicht zum Zug kommen („starvation“), wenn sich viele lesende Threads vordrängeln. Neue lesende Threads werden daher nur zugelassen, wenn keine schreibenden Threads warten.
Was ist das Problem der e Wiedereintrittsfähigkeit in Bezug auf Synchronisation? • Wiedereintrittsfähigkeit (reentrant) – wenn eine Methode mehrfach betreten werden kann, bevor sie verlassen wird. • Ursachen dafür sind - Multithreading - Interrupts - Rekursive Aufrufe - Signal-Handler - Ausnahmebehandlung • Threadsicherheit ist nur ein Teilaspekt: Wird ein threadsichere Methode aus einem Signalhandler aufgerufen, während sie sich gerade im kritischen Abschnitt befindet, kommt es zum Deadlock!
Was versteht man bei der Synchronisation unter "Verhungern" (starvation)? ein bereiter Prozess/Thread wird konsequent übergangen. Dies kann passieren, wenn der verwendete Synchronisationsmechanismus unfair realisiert wurde, z.B. • bei Schreib-/Lesesperren • wenn Mutexes/Bedingungsvariablen keine Warteschlangen verwalten (macht diese effizienter)
Welche Probleme können bei der Synchronisation auftreten? - Konflikte - Wiedereintrittsfähigkeit - Skalierbarkeit - Verhungern (starvation) - Verklemmung (Deadlock)
Was ist der "Konflikt" bei den Race Conditions? • Sperren werden nicht angefordert • Fehlerhafte Verwendung von Synchronisationsmechanismen: im Fall des wechselseitigen Ausschlusses sind Semaphore anfällig für Programmierfehler. • Wird ein Semaphor falsch initialisiert oder • falsch freigegeben (V-Operation) • können mehrere Prozesse/Threads einen kritischen Abschnitt betreten.
Was ist das Problem der Skalierbarkeit bei der Synchronisation? Wechselseitiger Ausschluss führt zu einer teilweisen Sequenzialisierung des Programms, daher sind Geschwindigkeitsgewinne durch Parallelisierung oft geringer als gedacht.
Was ist das Problem der Verklemmung bei der Synchronisation? In einem nebenläufigen System sind zwei oder mehrere Prozesse/Threads blockiert, weil sie Ressourcen besitzen, die von einem anderen blockierten Prozess/Thread benötigt werden. • Verklemmungsgefährdet sind nicht unterbrechbare Ressourcen, d.h. Ressourcen, die dem Prozess nicht ohne negative Konsequenzen entzogen werden können. • Unterbrechbare Ressourcen: Arbeitsspeicher • Nicht unterbrechbare Ressourcen: DVD-Brenner, Drucker
Womit beschäftigt sich das Scheduling? Mit der zeitlichen Zuordnung des Prozessors (bzw. der Prozessoren) an die verschiedenen Prozesse im System beschäftigt sich das Scheduling, manchmal auch Dispatching genannt.
Nennen Sie einige Eigenschaften zum Taskwechsel beim Scheduling. • Wechsel vom Benutzer- in den Kernel-Modus • Sicherung des Zustands des laufenden Prozesses • Akku • Register • Speicherzuordnungstabelle • Auswahl eines neuen Prozesses • Laden der neuen Speicherzuordnungstabelle • Start des Prozesses • Cache neu laden • Windows erlaubt ca. 100 Taskwechsel pro Sekunde, Linux ca. 400.
Nennen Sie die Ziele von Schedulingstrategien für die unterschiedlichen Systeme. • Alle Systeme - Fairness – jeder Prozess bekommt einen fairen Anteil an Rechenzeit - Policy Enforcement – vorgegeben Strategien werden durchgesetzt - Balance – alle Teile des Systems sind ausgelastet • Stapelverarbeitungssysteme - Durchsatz – Maximierung der Jobs pro Stunde - Durchlaufzeit – Minimale Zeit vom Start bis Ende • Interaktive Systeme - Antwortzeit – schnelle Reaktion des Systems • Echtzeitsysteme - Deadlines einhalten - Vorhersagbarkeit
Nennen Sie die Vorteile und Nachteile von FCFS First Come First Serve. Vorteile: • einfach • keine Unterbrechung von Prozessen durch Scheduler (Selbstaufgabe) Nachteil: • hohe Durchlaufzeit von E/A-intensiven Prozessen
Erklären Sie das Prioritätsscheduling. • Jedem Prozess wird eine Priorität (Wichtigkeitsstufe) durch den Anwender oder ein gesondertes Verfahren zugeordnet. • Laufen wird nun stets der oder die bereiten Prozesse mit der höchsten Priorität; • laufende Prozesse mit geringerer Priorität werden verdrängt. Bei gleicher Prioritätsstufe wird meist Round-Robin oder FCFS angewendet.
Nennen Sie das mögliche Problem von Prioritätsscheduling. Starvation. Ein Prozess wird nie ausgewählt auf Grund einer zu niedrigen Priorität.
Nennen Sie zwei Schedulingverfahren. - Prioritätsscheduling - Multi-Level Feedback Scheduling
Erklären Sie das Multi-Level Feedback Schedulingverfahren. • Ein Prozess wird abhängig von seiner bisherigen Laufzeit priorisiert. • Wird ein Prozess neu erzeugt, dann erhält er die höchste Priorität. • Wenn dieser Prozess das erste Mal beendet wird, dann wird auch seine Priorität schrittweise herabgestuft. • Präemptiv mit festem Zeitintervall • Mögliches Problem ist Starvation, wenn häufig neue Prozesse eintreten • Lösung - Größere Zeitintervalle, je niedriger die Priorität - Prozess allmählich wieder hoch priorisieren (UNIX)
Aus welchen Teilen besteht die Speicherhierarchie? • Register: wenige (8 -100), teuer, schnell, direkte Verbindung in der CPU • primärer Cache: wenig (8K Instruktionen, Daten), teuer, im CPU-Chip • sek. Cache: etwas mehr (bis zu 24 MB), rel. teuer, im CPU-Chip oder extern • Arbeitsspeicher RAM: viel (bis zu 256 GB), billig, langsam, weit entfernt von der CPU • Massenspeicher: riesig, sehr billig, sehr langsam, sehr weit entfernt von der CPU, permanent
Wovon werden die einzelnen Speicherhierachieebenen verwaltet? • Register: Aufgabe der Rechnerarchitektur • primärer Cache: Aufgabe der Rechnerarchitektur • sek. Cache: Aufgabe der Rechnerarchitektur • Arbeitsspeicher RAM: Aufgabe des Betriebssystems (Speicherverwaltung) • Massenspeicher: Aufgabe des Betriebssystems (Dateisysteme)
Welche Herausforderungen müssen gelöst werden, damit mehrere Prozesse gleichzeitig laufen können? • Relokation von Programmen (Anpassung von absoluten Adressen bei Sprüngen und sonstigen Speicherzugriffen) • Gegenseitiger Speicherschutz von Prozessen • Prozessen mehr (virtuellen) Hauptspeicher bieten können, als physikalisch vorhanden
Nennen Sie einige Verwaltungsarten von Adressräumen. - Verwaltung mit Bitmaps - Verwaltung mittels Freibereichslisten
Wie funktioniert die Verwaltung von Adressräumen mit BItmaps? • Größe der Blöcke ist wichtige Frage: große Verwaltungsstruktur vs. großen Verschnitt • 4 Byte pro Block, 1 Bit für Belegungsinformation --> 1/32 des Speichers wird für Bitmap benutzt • Suchen nach freien Blöcken muss in der gesamten Bitmap durchgeführt werden
Wie funktioniert die Verwaltung von Adressräumen mit Freibereichslisten? • verkettete Liste enthält Informationen über - freie Blöcke (L, Lücke) - belegte Blöcke (P, Prozess) • keine feste Größe, Größe ist Abhängig von der Anzahl der Prozesse • Terminierung von Prozessen erfordert Anpassen der Listenstruktur • doppelt verkettete Liste bietet Vorteile beim Verschmelzen von Lücken
Welche Optimierungen für die Verwaltung des freien Speichers gibt es? • Lücken und Prozesse in getrennten Listen verwalten 1. gezielte Suche nach Lücken 2. Abarbeiten von zwei Listen ist aufwendiger • Lücken nach Größe sortieren 1. optimale Suche bei Best Fit, 2. aber Verschmelzung von Einheiten schwierig 3. First Fit, Best Fit sind identisch, Next Fit überflüssig • Quick Fit: Lücken je nach Größe in verschiedenen Listen verwalten 1. schnelles Finden von Lücken 2. Nach Terminierung eines Prozesses ist das Verwalten der Listen aufwendig
Was ist die Ursache und der Lösungsansatz für virtuellen Speicher? • Problemstellung: große Prozesse 1. passen nicht mehr in den Speicher 2. sind nicht mehr gut per Swapping ein-/auszulagern, da die Datenübertragungsrate von Festplatten zu niedrig ist (1 GB dauern ca. 10s) • Lösungsansatz: virtueller Speicher und Paging 1. Adressraum wird in Seiten aufgeteilt 2. es müssen sich nicht alle Seiten eines Prozesses im Speicher befinden 3. fehlende Seiten werden nachgeladen, gerade nicht benötigte Seiten dafür ausgelagert. 4. jeder Prozess erhält eigenen virtuellen Speicher
Was ist Paging? • Die von einem Programm generierten Adressen werden als virtuell angesehen und bilden den virtuellen Adressraum • Die virtuellen Adressen werden von einer sogenannten Memory Management Unit (MMU) auf physikalische Adressen abgebildet
Wie kann das Paging beschleunigt werden? Transaction Lookaside Buffer (TLB) • Cache für wenige häufig benutzte Seiten (i. d. R. nicht mehr als 1024 Einträge) • Lokalitätsprinzip von Programmen
Was ist der Unterschied von einer lokalen und einer globalen Ersetzungsstrategie? • lokale Ersetzungsstrategie: - Prozess darf nur eigene Seiten auslagern • globale Ersetzungsstrategie - Prozess darf auch Seiten eines anderen Prozesses auslagern • Nicht alle Ersetzungsstrategien lassen sich global und lokal realisieren
Erklären Sie den Ablauf der Prozesserzeugung & -ausführung 1. Bestimmung der Größe des Programms für Programmseitentabelle 2. Bestimmung der anfänglichen Größe der Datenseitentabelle 3. Tabellen bekommen Speicher und werden initialisiert 4. Platzreservierung im Swap-Bereich der Festplatte 5. Kopieren von Programm und Daten in den Swap-Bereich 6. Initialisierung von MMU und TLB für neuen Prozess 7. Einlagern einiger oder aller Seiten des Prozesses 8. Starten des Prozesses
Erklären Sie den Ablauf bei Festellung von Seitenfehlern. 1. MMU stellt fest, gewünschte Seite ist nicht im Speicher 2. Aktueller Programmzähler auf Stack, dann Kernel-Interrupt 3. Interruptroutine sichert alle weiteren Register, leitet Interrupt an das BS weiter 4. Feststellen, welche virtuelle Seite fehlt. 5. Ist die Seite gültig? Existiert eine Schutzverletzung? 6. Suche nach freiem Seitenrahmen. Ersetzungsstrategie. 7. Einlagern der Seite von Festplatte. - Dabei bekommt ein anderer Prozess Rechenzeit, Ausnutzung von E/A - Interrupt von Festplatte signalisiert, dass Seite eingeladen wurde. 8. BS springt an Interruptroutine zurück. Wiederherstellen alle Register. 9. Interruptroutine kehrt zum Prozess zurück.
Welche drei Segmentarten gibt es? • Das Textsegment enthält den Maschinencode (Programm) und konstante Variablen (das Text-Segment kann nicht verändert werden) • Das Datensegment die globalen Variablen und den Heap (dynamischer Speicherbereich, aus dem von einem Programm zur Laufzeit Speicher angefordert werden kann), • das Stacksegment die lokalen Variablen.
Welchen Ablauf hat die Auflösung einer virtuellen Adresse? 1. Über die Segmentnummer wird der Segmentdeskriptor geladen. 2. Es wird geprüft, ob die Seitentabelle des Segments im Speicher liegt. Wenn nicht, wird ein Segmentfehler ausgelöst. Bei einer Schutzverletzung wird ebenfalls ein Fehler ausgelöst. 3. Der Seitentabelleneintrag wird geprüft. Liegt die Seite nicht im Speicher, wird ein Seitenfehler ausgelöst. 4. Der Offset wird zum Seitenanfang hinzuaddiert. 5. Über die resultierende physikalische Adresse erfolgt der Zugriff
Welche Realisierungen von persistenter Speicherung gibt es? Nennen Sie Beispiele. 1. Magnetisch: Festplatte, Disketten 2. Optisch: CD, DVD, Blue-Ray 3. Elektrisch: Flash
Was bedeutet hard link und soft link? Hard Link: • Eigenständiger Verzeichniseintrag wird erzeugt. • Eintrag verweist auf die Datei. • Datei kennt die Anzahl der Verweise. Wichtig für das Löschen. • Original und Verweis können nicht unterschieden werden. Soft Link: • Statt Verzeichniseintrag wird Datei erzeugt, die auf das Original verweist. • Keine weiteren Prüfungen durch das Betriebssystem danach. • Original kann gelöscht werden, link zeigt danach "ins Leere".
Was sind Log-basierte Dateisysteme? • sammeln von Schreibzugriffen im RAM in z. B. 1 MB großem Segment • Rückschreiben kompletter Segmenten, wenn sie voll sind • Segment für Segment füllt die Festplatte • I-Nodes sind über Segmente verteilt  I-Node-Map, die zentral verwaltet wird • Irgendwann ist Festplatte voll  Cleaner • Cleaner wird regelmäßig angestoßen und räumt auf
Was sind Journaling Dateisysteme? • Anstehende Operationen werden zuerst im Journal vermerkt und geprüft, ob das Journal richtig und vollständig gespeichert wurde • Danach wird erste Operation durchgeführt und bei Erfolg der Eintrag aus dem Journal entfern. Entfernung wird geprüft • Sukzessiv werden alle weiteren Operationen durchgeführt. • Kommt es zu einem Absturz, enthält das Journal die nicht ausgeführten Operationen und kann diese nach dem erneuten Hochfahren des Rechners nachholen.
Was sind alternative Datenströme (alternate data streams) in Windows? Alternative Datenströme sind eine Datenstruktur zur Aufnahme zusätzlicher strukturierter Daten innerhalb einer Datei neben den Hauptdaten.
Wozu werden alternative Datenströme benutzt? ADS-Datenströme werden zur Speicherung der in der Eigenschaftsseite jeder Datei verfügbaren Metadaten verwendet. Es wird außerdem ein sogenannter Zone Identifier gespeichert, der es ermöglicht, auch im nachhinein Dateien zu erkennen, die aus dem Internet heruntergeladen wurden.
Ist der open()-Systemaufruf in Unix absolut notwendig? Der eigentliche Lesezugriff wird ja mit read() durchgeführt. Was wäre die Konsequenz, wenn open() nicht existieren würde? Wenn es kein open gäbe, wäre es bei jedem read notwendig, den Namen anzugeben. Das System müsste dann die I-Node der Datei holen, obwohl das zwischengespeichert werden könnte.
Systeme, die sequentielle Dateien unterstützen, haben immer eine Operation, um diese zurückzuspulen. Benötigen Systeme, die Dateien mit wahlfreiem Zugriff unterstützen, dies auch? Nein. Wenn Sie die Datei erneut lesen wollen, greifen Sie einfach auf Byte 0 zu.
Gib es einen Unterschied zwischen dem Resultat von rename() und Umkopieren der Datei mit Löschung des Originals? Ja. Der Aufruf rename ändert den Zeitstempel des Neuanlegens oder den Zeitstempel der letzten Änderung nicht. Aber das Erstellen einer neuen Datei bewirkt, dass sowohl der Zeitpunkt des Erstellens, als auch der Zeitpunkt der letzten Änderung mit der aktuellen Zeit beschrieben wird. Allerdings könnte das Kopieren fehlschlagen, wenn die Platte voll ist.
Nennen Sie ein modernes Gerät, dass Dateien speichern muss und für das eine zusammenhängende Belegung von Blöcken für diese Datei sinnvoll ist. Ein digitaler Photoapparat speichert eine Anzahl von Bildern auf einem nichtflüchtigen Speichermedium (z.B. Flashspeicher). Wenn die Kamera zurückgesetzt wird, wird der Datenträger gelöscht. Danach werden neue Bilder wieder solange gespeichert, bis der Datenträger voll ist. Dann werden sie auf eine Festplatte kopiert. Für diese Anwendung ist ein derartiges Dateisystem in einer Kamera (z.B. auf dem Bildspeichermedium) ideal.
Wie implementiert ein FAT-System den wahlfreien Zugriff auf Dateien? Zunächst wird die Adresse des ersten Blocks im Verzeichnis gesucht. Dann wird durch eine Kette von Blockadressen in der Dateibelegungstabelle (FAT) gesucht, bis der benötigte Block gefunden wird. Diese Blocknummer wird dann für den nächsten read-Systemaufruf gespeichert.
Eine Datei hat eine I-Node, die die ersten 10 direkten Adressen verwendet. Jeder Block ist 1 KB groß. Wie groß darf die Datei werden? Mit den 10 direkten Plattenadressen an, kann eine Datei maximal 10 Blöcke besitzen. Da jeder Block 1 ist kByte groß ist, kann eine Datei maximal 10 kByte groß sein.
Nennen Sie einen Vorteil von hard links gegenüber soft links. Hard links benötigen keinen zusätzliche Plattenspeicherplatz, nur ein Zähler in der I-Node, der die Anzahl der Links mitzählt.
Nennen Sie einen Vorteil von soft links gegenüber hard links. Soft links brauchen Speicherplatz, um den Namen der Datei zu speichern, auf den der Link zeigt. Soft links können auf Dateien anderer Rechner, sogar über das Internet verteilte Rechner zeigen. Hard links sind darauf beschränkt, auf Dateien des selben Dateisystems innerhalb einer Partition zu zeigen.
Was würde geschehen, wenn die Freibereichsbitmap oder die Freibereichsliste nach einem Absturz komplett verloren geht? Betrachten Sie Unix und FAT-Systeme getrennt. Das ist überhaupt kein schlimmes Problem. Die Reparatur funktioniert problemlos; sie benötigt allerdings Zeit. Der Wiederherstellungsalgorithmus berechnet eine Liste aller Blöcke aller Dateien und verwendet das Komplement dessen als die neue Freibereichsliste. Unter Unix kann dies durch das Einlesen aller I-Nodes geschehen. Im FAT-Dateisystem kann das Problem gar nicht auftreten, da es dort überhaupt keine Liste freier Blöcke gibt. Aber, selbst wenn es diese geben würde, müsste zu deren Reparatur nur die FAT nach freien Einträgen durchsucht werden.
Das Unix-Dateisystem hat 1 KB Blöcke und 4-Byte Plattenadressen. Was ist die maximale Dateigröße, falls die I-Node 10 direkte Einträge, einen einfach, einen doppelt und einen dreifach indirekten Eintrag besitzt? Die I-Node speichert 10 Zeiger. Ein einzelner indirekter Block speichert 256 Zeiger. Der doppelt indirekte Block schafft schon 2562 Zeiger. Der dreifach indirekte Block speichert dann 2563 Pointer. Das alles aufaddiert ergibt eine Maximalgröße von 16,843,018 Blöcken, was ungefähr 16.06 GB entspricht.
Welche Arten von Ein-/Ausgabe Geräten gibt es? 1. Block-orientierte Geräte mit sequentiellem Zugriff 2. Block-orientierte Geräte mit wahlfreiem Zugriff 3. Zeichen-orientierte Geräte 4. Geräte, die nicht in dieses Schema passen
Erklären Sie den Unterschied zwischen Interruptgesteuerter und DMA gesteuerter Ein-/Ausgabe. Interrupt: Gerät meldet sich, wenn es Reaktion der CPU benötigt, per Interrupt. CPU benachrichtigt das Gerät, dass der Interrupt bearbeitet wird; bearbeitet den Interrupt; kehrt danach zum unterbrochenen Prozess zurück. DMA: CPU beauftragt den DMA-Controller mit einer Ein-/Ausgabe, blockiert den wartenden Prozess und kann mit weiteren Prozessen fortfahren. Der DMA-Controller meldet per Interrupt, wenn die Ein- /Ausgabe erledigt ist.
Was ist der Nachteil der programmierten Ein-/Ausgabe? Prozess muss aktiv den Zustand des Gerätes permanent prüfen. Verschwendung von CPU-Zeit.
Zusammenfassung anzeigen Zusammenfassung ausblenden

ähnlicher Inhalt

ein kleines Informatik Quiz
AntonS
Informatik
Tom Kühling
PHP Grundlagen
chrisi.0605
Wirtschaftsinformatik Teil 2
Sabrina Heckler
Informatik 1 - Einführung
Svenja
Codierung
Tom Kühling
Wirtschaftsinformatik Teil 1
Sabrina Heckler
Einführung in das Studium Informatik
Daniel Doe
Lernplan
Sandra K
Betriebssystem Zusammenfassung
Sophia S