Prozesse und Threads – Betriebssysteme

In diesem Beitrag geht es um Prozesse und Threads innerhalb von Betriebssystemen. Es geht außerdem um die Begriffe der Parallelität und der Nebenläufigkeit.

Auch die Begriffe des Kooperativen und des Präemptiven Multitasking´s werde ich hier näher erläutern.

Parallelität und Nebenläufigkeit

Parallelität bedeutet, das 2 Prozesse gleichzeitig Fortschritt erzielen. Es ist also zwingend notwendig, das beide Prozesse gleichzeitig laufen.

Verzahnte Ausführung bedeutet, das ein Prozessor, zwei Programme immer abwechselnd ausführt. Das bedeutet also, das beide Programme immer abwechselnd Fortschritt erzielen.

Die beiden oberen Vorgänge bedeuten „Nebenläufigkeit„, bedeutet also die zeitliche Überlappung der Verarbeitung.

Multitasking

Der Begriff Multitasking bedeutet die Illusion des Benutzers, das gleichzeitig mehrere Tasks (Prozesse) auf einem Computer ausgeführt werden.

Es bedeutet außerdem die Integration zwischen mehreren laufenden Programmen und die Ausnutzung von Multiprozessor- und Mehrkernsystemen. Es bietet einem zudem eine bessere Auslastung des Prozessors, wenn Programme warten müssen.

Das ganze System wird dadurch reaktiver (es wird schneller, bzw es erscheint dem Benutzer so).

Multitasking erlaubt also neue, einfacherer Systeme. Beispielsweise MySQL und Webanwendung (PHP). Jedes Programm macht hier sein Spezialgebiet und werden somit Nebenläufig (Gleichzeitig) ausgeführt.

Kooperatives Multitasking

Beim Kooperativen Multitasking geht es darum, dass die Tasks den Prozessor freiwillig nach bestimmter Zeit wieder freigeben. Sie geben vorab eine Schätzung ihrer Rechenzeit ab, stoppen nach dieser Rechenzeit und geben den Prozessor für einen anderen Task wieder frei. Allgemein hat kooperatives Multitastking schlechte Reaktivität (Schlecht programmierte Programme halten das System an), allerdings ist dies einfach zu programmieren, da keine explizite Synchronisation notwendig ist. MAC OS benutze kooperatives Multitasking bis 2001. Windows hingegen nutze es nur in 95/NT und z.B. Windows 3.11. Früher war kooperatives Multitasking relativ üblich.

Präemptives Multitasking

Beim präemptiven Multitasking bestimme das Betriebssystem die Verteilung der Programme auf dem Prozessor. Das Betriebssystem sagt den Tasks, wann sie den Prozessor bekommen. Programmierer müssen beim präemptiven Multitastking beachten, das man jederzeit unterbrochen werden kann, da das Betriebssystem die Ressourcen verwaltet. Die Entwicklung ist also etwas schwieriger, da eine explizite Synchronisation notwendig ist. MacOS X benutzt präemptives Multitasking seit 2001, Windows seit 1993.

Prozesse

Unter einem Prozess versteht man ein laufendes Programm/laufender Task. Hier sind mehrere Instanzen eines Programms möglich (Doppeltes starten eines Programmes). Ein Prozess ist also ein Laufzeitzustand eines Programms. An ihm kleben der Speicher, Geräte, Adressbereich usw.

Aufgaben des Betriebssystem

Die Aufgaben des Betriebssystems sind dabei das Starten und Beenden von Prozessen und die Zuteilung von Rechenzeiten. Das Betriebssystem muss außerdem die Ressourcen verteilen und muss Methoden zur Interprozesskommunikation bereitstellen. (Kommunikation zwischen Programmen) Das Betriebssystem zieht quasi „Zäune“ um alle Prozesse, damit die Prozesse nicht die selben Daten gleichzeitig bearbeiten/speichern können.

Die Üblichen gründe warum Prozesse gestartet werden sind z.B., Interaktiv durch den Benutzer (Shell, Benutzeranmeldung), durch andere Programme (Batchfiles, direkt übr API des Betriebssystems) und durch das Betriebssystem selbst (Systeminitiaiesierung, z.B. starten von Hintergrunddiensten).

Die Üblichen Gründe warum ein Prozess beendet wurde sind z.B. freiwilliges normales Prozessende, ende des übergeordneten Prozesses, explizites Beenden durch einen anderen Prozess, Fehlende Ressourcen (Keinen Speicher mehr etc.), schwerwiegende Fehler im Prozess (Speicherschutzverletzung) oder durch die Abmeldung des Benutzers.

Prozesse können außerdem blockiert und wieder aufgeweckt werden. Dies geschieht durch expliziter Aufruf einer Systemfunktion. Prozesse können „Bereit“, „Laufend“ oder „Blockiert“ sein.

Verwaltung durch das Betriebssystem

Es gibt innerhalb des Betriebssystems einen Prozesskontrollblock mit folgendem Inhalt:

  • Prozess ID (PID)
  • Registerinhalte
  • Speicherbereiche
  • Offene Daten
  • Belegte Ressourcen
  • Verwaltungsinformationen

Das System hat eine Prozessliste mit Zeigern auf alle PCB´s. (Prozesskontrollblöcke). Üblicherweise hat das Betriebssystem zusätzliche eine Liste über Bereite, Blockierte und Laufende Prozesse.

Gängige Ursachen für Prozesswechsel wären z.B. der Ablauf der Zeitscheibe bei präemptivem Multitasking, Unterbrechungsbehandlung durch andere Prozesse (z.B. Soundkartentreiber wo Echtzeitverhalten gefragt ist), virtueller Speicher, der nicht verfügbar ist beim Zugriff, explizites Blockieren des Prozesses oder einfach das Prozessende.

Betriebssystemkerntypen

Es gibt im wesentlichen 3 verschiedene Betriebssystemkerntypen.

Zum einen gibt es „Non-Process Kernel“ Betriebssysteme. Dies bedeutet das, das Betriebssystem keine eigenen Prozesse hat.

Die zweite Variante wäre, das es den privilegierten Modus für Prozesse gibt, welches aber auch keinen eigenen Prozess im Betriebssystem darstellt.

Die letzte Variante sind prozessbasierte Betriebssysteme, wie z.B. Windows. Das Betriebssystem besteht in diesem Fall auch aus einzelnen Prozessen. Das Betriebssystem wird in diesem Fall auch in gewisser Linie parallel.

Marvin Sengera

Marvin Sengera

Hey! Ich bin Marvin Sengera, Inhaber der Internetagentur "Binärfabrik" aus Paderborn. Ich habe mein Bachelorstudium Informatik mit Schwerpunkt Industriespionage an der Hochschule Hamm Lippstadt abgeschlossen und absolviere derzeit meinen Master in Fachrichtung "Technical Entrepreneurship and Innovation". Ich beschäftige mich rund um die Themen Informatik, Innovation & Unternehmensgründung.

Das könnte Dich auch interessieren …

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.