Prozesse & Threads Flashcards
Was ist ein Prozess?
abstraktes Konzept, das eine laufende Anwendung repräsentiert.
Das Betriebssystem verwaltet die Prozesse und die Resourcen, die sie verwenden.
Process Control Block
Betriebssystem verwaltet eine Prozesstabelle aller laufenden Prozesse.
Jeder Prozess wird durch einen Process Control Block (PCB) repräsentiert, der Informationen zum Prozess enthält (z.B. Prozess ID, Prozesszustand, Scheduling, Memory)
Prozesszustände
- New – der Prozess wurde neu erstellt
- Ready – der Prozess ist bereit um von der CPU ausgeführt zu werden
- Running – der Prozess wird von der CPU ausgeführt
- Waiting – der Prozess wartet auf ein Ereignis (z.B. eine I/O-Operation)
- Terminated – der Prozess wurde beendet
Multitasking
Betriebssysteme können mehrere Prozesse gleichzeitig verwalten. Ob diese Prozesse auch gleichzeitig ausgeführt werden können, davon ab ob mehrere CPU Kerne vorhanden sind.
Nebenläufigkeit vs Parallelität
Nebenläufigkeit bedeutet, dass mehrere Tasks über einen längeren Zeitraum hinweg Fortschritte machen. Auch mit nur einem CPU Core ist Nebenläufigkeit möglich, indem Tasks abwechselnd ausgeführt werden.
Parallelität hingegen bedeutet, dass mehrere Tasks tatsächlich gleichzeitig ausgeführt werden. Das ist nur möglich, wenn mehrere CPU Cores zur Verfügung stehen.
Context Switch
- Das OS pausiert die Ausführung des aktuellen Tasks.
- Das OS speichert den aktuellen Taskzustand im jeweiligen PCB.
- Das OS lädt den Taskzustand des neuen Tasks aus dem PCB.
- Das OS setzt die Ausführung des neuen Tasks fort.
Wie können neue Prozesse erzeugt werden?
- Systeminitialisierung – der init Prozess wird beim Starten des Systems automatisch erzeugt
- System Call – ein Prozess kann einen neuen Prozess mittels fork(2) erzeugen
- Benutzerinteraktion – ein Benutzer startet einen Prozess in der Kommandozeile oder über ein GUI
getpid(2) & getppid(2)
- getpid() liefert die PID des aufrufenden Prozesses.
- getppid() liefert die PID des Elternprozesses.
Wann werden Prozesse terminiert?
- am Ende der Ausführung (freiwillig)
- wenn ein Fehler auftritt (freiwillig)
- wenn ein Signal empfangen wird (freiwillig)
- wenn er von einem anderen Prozess terminiert wird (unfreiwillig)
- wenn ein fataler Fehler („Absturz“) eintritt (unfreiwillig)
exit(3)
beendet den laufenden Prozess und gibt einen Rückgabewert an den Elternprozess zurück. Der Elternprozess kann den Rückgabewert mit wait(2) abfragen.
Threads
Jeder Prozess besteht aus mindestens einem Thread. Ein Thread ist das grundlegende Konstrukt, das Teile einer
Anwendung zur Ausführung bringt.
- Jeder Thread hat einen eigenen Stack und einen Ausführungszustand (Program Counter und Registerwerte)
- Threads laufen im Kontext eines Prozesses und teilen sich dessen Ressourcen (Speicher, Dateien, etc.)
Vorteile von Threads
- erlauben einem Prozess Arbeit zu verrichten, während ein anderer Thread blockiert ist.
- teilen sich manche Ressourcen eines Prozesses
- Wechseln zwischen Threads ist mit wesentlich weniger
Overhead verbunden als das Wechseln zwischen Prozessen.
Erkläre den Begriff “Swapping”
Mechanismus, bei dem ein Prozess vorübergehend aus dem Hauptspeicher in den Sekundärspeicher (Festplatte) ausgelagert (oder verschoben) wird und damit anderen Prozessen der Hauptspeicher zur Verfügung gestellt werden kann. Zu einem späteren Zeitpunkt lagert das System den Prozess vom sekundären Speicher in den Hauptspeicher zurück.
Vor & Nachteile von Swapping
Vorteile:
- Es hilft der CPU, mehrere Prozesse innerhalb eines einzigen Hauptspeichers zu verwalten.
- Es hilft, virtuellen Speicher zu erstellen und zu verwenden.
- Durch das Swapping kann die CPU mehrere Aufgaben gleichzeitig ausführen. Daher müssen Prozesse nicht sehr lange warten, bis sie ausgeführt werden.
- Es verbessert die Hauptspeicherauslastung.
Nachteile:
- Wenn das Computersystem ausfällt, kann der Benutzer alle Informationen verlieren, im Bezug auf das genutzte Programm, welches dauerhaft Swapping nutzt.
- Wenn der Swapping Algorithmus nicht gut ist, kann die zusammengesetzte Methode die Anzahl der Seitenfehler erhöhen und die gesamte Verarbeitungsleistung verringern.
Unterschied zwischen Typ 1 und Typ 2 Hypervisor?
Typ-1-Hypervisoren greifen direkt auf die zugrunde liegenden Hardware-Ressourcen zu. Sie können ihre eigenen benutzerdefinierten Ressourcenzuweisungsstrategien implementieren, um ihre virtuellen Maschinen zu bedienen.
Typ-2-Hypervisoren verhandeln die Ressourcenzuweisung mit dem Betriebssystem, was den Prozess langsamer und weniger effizient macht.