Betriebssysteme2 Flashcards
Was ist ein Betriebssystem?
Ein Betriebssystem ist eine Software die:
Prozesse, Speicher, Dateien, Geräte und Benutzeroberflächen verwaltet
und steuert.
Wie wird auch Systemsoftware genannt?
Einheiten oder Bausteine
Wie sehen die Benutzungsrelationen von Benutzer und der Hardware aus?
Benutzer –> Benutzerprogramm –> Betriebssystem –> Maschinenhardware
Was ist langsamer: Speicherzugriffe oder Registerzugriffe?
Speicherzugriffe sind langsamer, da sie einen viel weiteren Weg einlegen müssen als Registerzugriffe.
Was ist ein Speicherzugriff?
Was ist ein Register?
Ein Register ist ein kleines, sehr schnelles Speicherelement im Prozessor eines Computers. Register dienen zur temporären Speicherung von Daten und Instruktionen, die für die laufenden Berechnungen und Operationen des Prozessors benötigt werden
Was sind die Funktionen von Registern?
Was ist ein Registerzugriff?
Was ist eine Instruktion?
Instruktionen sind Anweisungen für den Prozessor und werden nacheinander vom Rechenwerk ausgeführt
Was ist ein Rechenwerk?
Erkläre arithmetische und logische Operationen
arithmetisch: Addition, Subtraktion, Multiplikation, …
logisch: UND, ODER, …
Wo arbeitet primär das Rechenwerk?
Auf Registern
Nenne spezielle Register
Programmzähler: Speichert die Adresse der nächsten auszuführenden Instruktion
Prozessorstatuswort oder auch Statusregister: Beherbergt Verschiedene Markierungsbits (Flags)
Nenne die verschiedenen Bedingungsbits für bedingte Sprünge (Flags)
Zero flag
Sign flag
Carry flag
Overflow flag
Was macht Zero Flag?
Zero flag: Ergebnis der letzten arithmetischen oder logischen Operation war Null
Was macht Sign Flag?
Sign flag: Ergebnis der letzten arithmetischen oder logischen Operation war kleiner als Null
Was macht Carry Flag?
Carry flag: Bei der letzten arithmetischen Operation trat ein Übertrag auf
Was macht Overflow Flag?
Overflow flag: Bei der letzten arithmetischen Operation trat ein Überlauf auf
Was sind Argumente in Methoden?
Parameter void Funktion1(int a) {
Was ist ein Call Stack?
Ein Call Stack ist ein spezieller Speicherbereich, der von einem Programm zur Verwaltung der Funktionsaufrufe und deren Rückgabeadressen verwendet wird.
Wieso benötigt man einen Call Stack?
Der Call Stack ermöglicht es dem Programm, die Rückgabeadresse für jede Funktion zu speichern, sodass nach Abschluss einer Funktion die Ausführung an die richtige Stelle zurückkehrt.
Wie sieht ein Call Stack aus (Code)?
void functionA() {
functionB();
}
void functionB() {
// Some operations
}
int main() {
functionA();
return 0;
}
Was sind Globale Variablen und für was benötigt man diese?
Globale Variablen werden in separatem Datenbereich gespeichert um überall verwendet zu werden.
Was ist ein Heap
Der Heap ist ein Bereich des Speichers, der zur Laufzeit für dynamische Speicheranforderungen genutzt wird. Wenn die Anzahl und Größe der zur Laufzeit erzeugten Daten zur Kompilierzeit unbekannt sind, wird ein separater Speicherbereich namens Heap verwendet, um dynamisch Speicher allozieren und freigeben zu können.
Wie sieht ein Heap aus (Code)?
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n = s.nextInt(), a[] = new int[n];
for (int i = 0; i < n; i++) a[i] = s.nextInt();
for (int x : a) System.out.print(x + “ “);
}
}
Zeichne das Schichtenmodell
User1, User2, …
Compiler, Editor, …
Betriebssystemdienste
Hardware
Nenne verschiedene Heap Arten
malloc, new
free, delete
Wie verhindert man das Benutzerprogramme unkontrolliert auf die Hardware zugreifen?
User Mode
Kernel Mode
Was ist der User Mode
User mode: Die meisten Instruktionen des Nutzerprogramms können direkt auf der CPU ausgeführt werden
Was ist der Kernel Mode
Programme haben vollen Zugriff auf alle Instruktionen
Was, wenn Benutzerprogramm, das im user mode läuft, eine Aktion ausführen will, die nur mit privilegierten Instruktionen durchgeführt werden kann?
Programm muss das Betriebssystem über Systemaufrufe (system calls) um Hilfe bitten! Betriebssystem überprüft die Anfrage
und führt die Aktion dann für das Benutzerprogramm aus
Was sind Call Gates?
Mit call gates können Privilegierungsstufe gewechselt werden
Wie viele Privilegierungsringe gibt es und was machen die einzelnen Ringe?
● Ring 0: kernel mode
● Ring 1: keine privilegierten Instruktionen, eingeschränkte Gerätezugriffe
● Ring 2: keine privilegierten Instruktionen, Gerätezugriffe stärker eingeschränkt
● Ring 3: keine privilegierten Instruktionen, keine Gerätezugriffe: user mode
Was ist “MACH”?
Der Mach-Betriebssystemkern ist ein Mikrokernel, der nur grundlegende Funktionen wie Inter-Prozess-Kommunikation, Thread-Management und Speicherverwaltung im Kernel implementiert und andere Dienste in den User-Space auslagert, um die Systemstabilität und -sicherheit zu erhöhen.
Nenne die Vorteile und Nachteile eines Mikrokerns
Vorteile: minimaler Kern, alle Funktionen modularisiert austauschbar,
Programmfehler bringt höchstens den jeweiligen Manager zum Absturz, Speicherbereiche der Manager voneinander isoliert
Nachteile: Kommunikationsdauer zwischen Managern, Höhere Komplexität von Managern durch Kommunikation
Für was benötigt man Systemaufrufe?
Anforderung von Diensten beim Betriebssystem: Dateioperationen, Prozessmanagement, Speicheranforderungen,
Netzwerkoperationen, …
Kurzum: Alles, was privilegierte Instruktionen oder generell Unterstützung vom Betriebsssytem benötigen würde
Wie werden Systemaufrufe durchgeführt?
- Vorbereitung der Parameter durch den aufrufenden Prozess
- Aufruf der Systemaufruf-Schnittstelle (z.B. durch einen Software-Interrupt)
- Wechsel in den Kernel-Modus
- Verarbeitung der Anforderung durch den Kernel
- Rückkehr in den User-Modus mit Rückgabewert
Wie wird kontrolliert in den Kernel Mode gewechselt?
x86: Call Gates (kaum genutzt)
Aufruf mittels Traps („Falltüren“): Synchrone, indirekte Methodenaufrufe
Was sind “Interrupts”
Interrupts unterbrechen die Ausführung des aktuellen Programms durch eine Interrupt Service Routine (ISR)
Wie werden Interrupts ausgelöst?
● Externe Geräte (Interruptsignale)
● Können durch Flag im Prozessorstatuswort temporär deaktiviert („maskiert“) werden
● Software (Trap-Instruktionen)
● Prozessor (faults), z.B. ungültige Instruktion, Division durch Null, im user mode nicht erlaubte Instruktion, …
Was muss zur Behandlung der Interrupts gemacht werden?
Zur Behandlung des Interrupts muss der aktuelle Kontext gespeichert und später wiederhergestellt werden!
Wie sieht der Ablauf der Behandlung des Interrupts aus?
- Alle Register (Programmzähler, Status- und sonstige Register) auf den Aufrufstapel (Stack) sichern
- Programmzähler und Statusregister gemäß Einträgen im Interruptvektor setzen, sodass als nächstes ISR ausgeführt wird
- ISR läuft: kann alle Register nach Belieben verwenden (insbesondere: verändern!)
- Alle Register vom Stack wiederherstellen
- Ursprünglich ausgeführtes Programm kann wie vor der Unterbrechung weiterarbeiten Alle Register haben denselben Wert wie vorher!
Was passiert nach dem Systemaufruf bei einem Interrupt?
- Im Betriebssystemkern ist kein Fehler aufgetreten
Benutzerprogramm verlässt den Kern wieder und arbeitet normal weiter (im user mode) ODER - Im Betriebssystemkern ist ein Fehler aufgetreten Fehlermeldung an Benutzerprogramm
Oder: Abbruch des Programms
Was ist GNU Hurd?
GNU Hurd ist ein fortschrittlicher Betriebssystemkernel, der Teil des GNU-Projekts ist. Er nutzt einen Mikrokernel-Ansatz, bei dem grundlegende Betriebssystemdienste in User-Space-Servern ausgeführt werden, was Flexibilität und Sicherheit erhöht.
Was ist ein Prozess?
Ein Prozess umfasst Programmcode sowie alle Verwaltungsinformationen, die zum Ausführen unabhängig von anderem
Programmcode vom Betriebssystem benötigt wird (Prozesskontext).
Er teilt mit anderen Prozessen nichts, nur die global bekannten Betriebsmittel wie Dateisystem, Drucker, etc.
Er kann als Untereinheiten mehrere Threads enthalten.
Was sind Threads?
Ein Thread umfasst neben dem Programmcode nur die Verwaltungsinformationen des Stacks (Stack Pointer, SP) und des
Programmzählers (Program Counter, PC).
Er teilt den gesamten restlichen Prozesskontext (Speicherbereich, offene Dateien, Pipes, …) mit allen anderen Threads
seines Prozesses.
Wann nutzt man Threads, wann Prozesse?
Was ist Prozess-Scheduling und Dispatching?
In welchen Zuständen kann sich ein Prozess befinden?
Welche Probleme kann es geben, wenn ein Betriebssystem nur Prozesse aber keine Threads hat
Warum Mehrprozessorbetrieb?
● Effiziente Nutzung des Systems!
● Mehrprogrammbetrieb: mehrere Teilnehmer und mehrere Aufgaben am Rechner bzw. Server-Betrieb im Netz
● Parallelbetrieb: unterschiedliche CPU vs. I/O-Nutzung parallel auszuführender Programme
Woraus bestehen Prozesse?
Bild: Prozess: Daten, Programm, Stack +
Prozesskontext: CPU-Register, MMU-Register, Kernel-Stack, Dateiinfo, Zugriffsrechte
Welche Prozesszustände gibt es?
Bereit, Aktiv, Blockiert (und Standby)
Zeichne das Modell der Dispachteraktionen auf (Prozesse)
Was macht ein Scheduler?
Erstellen der „bereit“-Liste
Was macht ein Dispatcher
schnelle Zuteilung zur CPU
Was ist ein Zombie-Prozess?
Was ist ein Kinder-Prozess?
Ein Programm (Job) kann mehrere Prozesse erzeugen und diese nennt man Kinderprozesse.
Welche Prozesszustände haben Warteschlangen, welche keine?
● Warteschlangen: bereit, blockiert.
● Keine Warteschlangen: alle anderen