Betriebssysteme

WS 13/14 HTWG

WS 13/14 HTWG


Julie Tharlop
Diese Lernkarten behandeln grundlegende und fortgeschrittene Konzepte von Betriebssystemen auf Universitätsniveau. Sie decken Themen wie Prozesse, Threads, Kernel, E/A-Management, Synchronisation und Speicherverwaltung ab. Besonders relevant sind Mechanismen wie Semaphore, Monitore, Pufferarten und Adressierung. Studierende der Informatik profitieren davon, um ein tiefes Verständnis der Funktionsweise und Implementierung von Betriebssystemen zu erlangen.
Cartes-fiches
135
Utilisateurs
11
Langue
Allemand
Catégorie
Informatique
Niveau
Université
Créé / Mis à jour
28.01.2014 / 04.07.2022

Cartes-fiches

Was passiert mit Threads eines Prozesses wenn dieser Prozess terminiert?

Alle zugehörigen Threads werden auch terminiert. (Ab ins Nirvana)

realtive, logische und physikalische Adresse?

  • Logische Adresse: Verweis auf einen Speicherbereich, der unabhängig von der tatsächlichen Speicherverteilung des Programms im Hauptspeicher ist. Um tatsächlich einen Zugriff auf die physische Adresse machen zu können, muss die logische Adresse zuerst in eine physische Adresse umgewandelt werden.
  • Relative Adresse: ist ein spezielles Beispiel für eine logische Adresse. Hier wird eine Adressenreferenz als Referenz zu einem Basiswert ausgedrückt, üblicherweise zum Beginn des Programms.
  • Physische Adresse: Die absolute Adresse der Referenz im Hauptspeicher!

Warum ist Multiprogramming ohne DMA (früher) sinnlos?

Das Ziel von Multiprogramming ist ein Programm laufen zu lassen während ein anderes Programm mit E/A beschäftigt ist. Ohne DMA währe die CPU auch mit der E/A beschäftigt und könnte kein anderes Programm abarbeiten --> Komplette Auslastung der CPU nur für ein Programm

Pufferarten für die E/A?

Einzelpuffer, Doppelpuffer, Ringpuffer

Wie kann die Bedingung des hold and wait verhindert werden?

alle Ressourcen auf einmal anfordern (z.B.)

Katalog 3, 1. "spezielle" Frage und die letzte

TODO

Anforderungen, die bei der Implementierung von Mechanismen für den wechselseitigen Ausschluss beachtet werden müssen:

  1. Mutual Exclusion (wechselseitiger Ausschluß) bedeutet: Immer nur ein Prozess kann einen kritischen Bereich ausführen. Somit kann immer nur einer der Prozesse, die gleichzeitig eine 'einmalige' Ressource benutzen wollen, auf diese Ressource zugreifen.
  2. Stoppt ein Prozess in seiner Ausführung außerhalb des krit. Bereichs, so darf sich dies nicht negativ auf die Ausführung der anderen Prozesse auswirken.
  3. Wartet ein Prozess auf die Ausführung eines kritischen Bereichs, so muss diese Anforderung in einer endlichen Zeit erfüllt werden -> Kein Deadlock oder Starvation!
  4. Hält sich kein Prozess im krit. Bereich auf, so muss der Wunsch eines Prozesses diesen krit. Bereich zu betreten ohne Verzögerung erfüllt werden.
  5. Die Realisierung muss unabhängig von der relativen Prozessgeschwindigkeit und der Anzahl der Prozesse sein.
  6. Jeder Prozess darf sich nur eine endliche Zeit im krit. Bereich aufhalten.

Ein File mit Filedescriptor fd enthält folgende Sequenz an Zeichen: 3,1,4,1,5,9,2,6,5,3,5. Was enthält buffer nach folgendem Aufruf:

lseek( fd, 3, SEEK_SET);
read( fd, &buffer, 4);

(lseek setzt die aktuelle Leseposition auf das 3te Byte)

buffer = 1,5,9,2

Nenne Beispiele für Zeichen- bzw Blockorientierte Geräte!

  • Block: Platten, Disketten, Bandlaufwerke...
  • Zeichen: Terminals, Maus, Tastatur, Drucker, Modems, Netzwerkkarten...

Welche Gründe gibt es, dass mehrere Prozesse auf den selben Speicherbereich zugreifen können?

  • Code Sharing --> Optimierung des Speicherplatzes
  • Shared Memory --> Schneller Datenaustausch

Unterschied zwischen Seiten und Rahmen?

Hauptspeicher besteht aus Rahmen, Adressraum besteht aus Seiten

Was ist der Unterschied zwischen einfachem Paging und Paging mit virtuellem Speicher?

  • Einfaches Paging: Alle Pages eines Prozesses müssen sich im Haupstpeicher befinden, damit das Programm läuft.
  • Virtuelles Paging: Es müssen nicht alle im HS sein. Können bei Bedarf nachgeladen werden.

Existiert ein Stack pro Thread oder pro Prozess, bei User/Kernel-Level Threads?

Egal bei welcher Art von Threads. Jeder braucht seinen eigenen Stack.

Was ist der Unterschied zwischen preemtiv und non-preemtiv?

unterbrechend bzw. nicht unterbrechend

Wenn ein Prozess blockiert ist, weil er auf ein bestimmtes Ereignis (Signal) wartet, wird er in die entsprechnende Queue eingereiht. Ist es möglich, dass sich ein Prozess in mehr als einer "Ereignis"-Queue befindet?

Ja ist möglich z.B.: Ein Prozess wartet auf Daten. Diese Daten können von einem anderen Prozess bereitgestellt werden oder kommen von einem E/A-Transfer von der Platte.

Was macht der Reference Count?

hat irgendwas mit dem COW - Bit zutun... frag mich was leichteres

Was ist Polling?

Bezeichnet eine Methode, den Status eines Gerätes (oder andere Wertveränderungen) mittels zyklischem Abfragen zu ermitteln.

Was ist der Unterschied zwischen einem Kontextwechsel und einem Moduswechsel?

  • Kontextwechsel: Wechsel von einer Task zu einer anderen
  • Moduswechsel: Wechsel von User in Kernel Mode

Was ist eine Race Condition?

Wenn eine Task "schneller" ist als die andere obwohl sie noch auf das Ergebnis der anderen warten sollte.

Prozessmodell mit 5 Zuständen?

so:

Nenne 3 Funktionen, die in einem Mikrokernel implementiert werden sollten.

Speicherverwaltung

Prozessverwaltung

Kommunikation für die Services

Interrupts und E/A

Was ist ein Befehlstrace?

Die Sequenz von Befehlen die von einem Prozess bei der Ausführung durchlaufen werden

Was ist Auslagerung und was ist der Zweck?

Falls nicht genug Speicher vorhanden, werden gewisse Prozesse ausgelagert. Das heißt sie werden (auch nur zum Teil) auf den Hintergrundspeicher (Platte) verschoben.

Zweck: Um Platz zu schaffen für rechenbereite (ready) Tasks, werden blockierte Tasks ausgelagert.

Wie kann man die ISR mit User-Threads/Kernel-Threads realisieren?

ersteres geht ersmal gar nicht. Letzeres kann man mit einem hochprioren Kernel-Thread realisieren.

System mit 2 Prozessoren. 3 Programme: P0, P1, P2 mit 5 ms, 10 ms und 20 ms (kein E/A & non preemtiv) werden gleichzeitig gestartet. Wie lange dauert es bis alle beendet sind? (4 Möglichkeiten)

  1. P2 auf CPU1 und P1, P0 auf CPU2 = 20ms
  2. P1 auf CPU1 und P2, P0 auf CPU2 = 25 ms
  3. P0 auf CPU1 und P1, P2 auf CPU2 = 30 ms
  4. alle auf der gleichen CPU = 35 ms

Was ist der Unterschied zwischen logischer und Geräte E/A?

  • Bei logischen E/A wird auf das "Gerät" in abstrakter Art und Weise umgegangen ohne dass man Details über die internen Funktionsweise des Gerätes kennen muss. (open, close, read, write)
  • Bei E/A Geräten werden auch gerätespezifische Sequenzen abgelaufen. (Puffertechniken erhöhen die Performance)

Welche Komponenten eines Programmkontextes werden zwischen Threads geteilt? (Registerwerte oder so etc..)

  • Heap Memory
  • Globale Variablen

Registerwerte und Stack besitzt jeder Thread seperat.

Nenne 2 Möglichkeiten die Bedingung des Ressourcenentzugs zu verhindern?

  • Prozess gibt Ressourcen frei, sobald er eine angeforderte nicht bekommt.
  • OS fordert eine Ressource, falls ein andere Prozess sie anfordert.

Was sind die Vorteile des Mikrokernel?

  • Services des Betriebssystem können ergänzt/verändert werden ohne Änderung der Implemntierung des Kernels.
  • Datensicherheit ist höher, da mehr Aktivität im User-mode als im Kernel-mode laufen. (Im Gegensatz zum Monoloithischen Anstanz)
  • Das Design des Kernels ist einfacher, da Services unabhängig voneinander implementiert werden können. (einfach --> stabil)

Wie kann ein OS welches Interrupts sperren kann, Semaphore implementieren?

  1. interrupts sperren
  2. variable lesen
  3. Falls wait aufgerufen wird und der Wert der variable ist unter 0, wird der Prozess blockiert
  4. Falls signal aufgerufen wird, prüft das OS ob ein Prozess geweckt werden muss.
  5. Interrupts freischalten

Kann folgender Aufruf ein anderen Wert als nbytes in count zurückliefern? Wenn ja, warum?

count = write( fd, buffer, nbytes);

nur bei fehlerfreiem Aufruf werden auch nbytes zurückgeliefert. Wäre z.B. fd falsch so würde -1 zurückgeliefert werden. Falls der Ort zum schreiben voll wäre, würde auch nur so viel zurückgeliefert werden, wie tatsächlich geschrieben worden ist.

Gebe für die Folgenden Systemaufrufe einen Grund an warum sie nicht funktionieren könnten:

  • fork
  • exec
  • unlink

  • fork: kein freier Platz mehr in der Prozesstabelle oder kein Speicher mehr vorhanden
  • exec:  angegebene Datei existiert nicht oder ist nicht ausführbar
  • unlink: angegebene Datei existiert nicht oder der aufrufende Prozess hat nicht genügend Rechte

Was ist der Unterschied zwischen Multiprogramming und Multitasking?

Bei Multitasking können die einzelnen Tasks Nachrichten austauschen. Bei Multiprogramming-Systemen laufen Programme unabhängig von einander

Was ist der Unterschied zwischen einem Trap und einem Intrerrupt?

Ein Trap erzeugt zwar ein Interrupt, jedoch immer an der gleichen Stelle im Programm. Ein vom System ausgelöster Interrupt geschieht zufällig und unabhängig von dem Anwenderprogramm und ist somit nicht reproduzierbar.

Warum ist die Trennung von Mechanismus und Policy wünschenswert (Beim Kerndesign) ?

Beispiel: Policy des Schedulers bei sched_setsched().
Das System wird Flexibler, da Mechanisem unabhängig von Polcies implementiert werden können. Diese kleinen Bausteine können von verschiedenen Polcies dann genutzt werden und ausgetauscht werden.

Warum sollten Prozesse reloziert werden?

Um Tasks ein und auszulagern. Bei zu großen Tasks könnte evtl nicht der gesamte Prozess in den HS passen.

Warum ist es nicht möglich, Speicherschutz zum Zeitpunkt des Kompilierens in einem System mit MMU zu erzwingen?

Absolute Adressen zu checken ist beim kompilieren nicht möglich --> erst zuweisung zur Laufzeit

Warum ist eine Leistungssteigerung zu erwarten, wenn statt eines Puffers für die E/A zwei verwendet werden?

Zwei Operationen können gleichzeitig laufen:

  • Daten werden in Puffer 1 vom Prozess geschrieben.
  • Daten werden von Puffer 2 vom Kernel auf E/A Geräte transferiert.

Was heißt Time - Sharing?

Gleichzeitige Bedienung verschiedener Benutzer. Jeder Benutzer bekommt einen Time - Slice zur Verfügung und meint die gesamte Recource Computer zu nutzen

Was bedeutet Multitasking?

(Quasi) Gleichzeitiges Ablaufen von Programmen. (single oder multi prozesser)

Étudier