Prozesse und Threads in Betriebssystemen

Eingeordnet in Informatik

Geschrieben am in Deutsch mit einer Größe von 5,84 KB

Prozesse

Ein Prozess ist ein laufendes Programm. Vom Betriebssystem verwaltete Prozesse bestehen aus:

  • Den Anweisungen eines Programms, die vom Mikroprozessor ausgeführt werden.
  • Dem Zustand der Ausführung zu einem bestimmten Zeitpunkt, d.h. den Werten der CPU-Register für das Programm.
  • Seinem Arbeitsbereich im Speicher, d.h. dem reservierten Speicher und dessen Inhalt.
  • Weiteren Informationen, die das Betriebssystem für die Planung benötigt.

Prozesszustände

Wird ausgeführt (Running)

Der Prozess wird auf der CPU ausgeführt. In einem Ein-Prozessor-System kann sich höchstens ein Prozess in diesem Zustand befinden.

Bereit (Ready)

Der Prozess ist bereit zur Ausführung, muss aber auf die Zuweisung der CPU warten.

Wartend (Blocked)

Der Prozess kann nicht ausgeführt werden. Er wartet darauf, dass ein Ereignis eintritt, z.B. der Abschluss einer E/A-Operation. Man sagt auch, er ist ausgesetzt oder blockiert.

Kontextwechsel

Ein Kontextwechsel beinhaltet die Ausführung einer Routine des Betriebssystemkerns in einem Multitasking-System. Er dient dazu, die Ausführung eines Threads (oder Prozesses) zu unterbrechen, um die Ausführung eines anderen zu ermöglichen.

Prozesserzeugung

Ein Elternprozess kann neue Prozesse, 'Kindprozesse', durch Systemaufrufe erzeugen. Diese Kindprozesse können ihrerseits weitere Prozesse erzeugen.

Threads

Ein Thread ist eine Funktion, die es einer Anwendung ermöglicht, mehrere Aufgaben gleichzeitig auszuführen. Threads teilen sich Ressourcen wie Speicher, offene Dateien, Authentifizierungsstatus usw. Diese Technik vereinfacht die Entwicklung einer Anwendung, die verschiedene Funktionen gleichzeitig ausführen muss. Threads desselben Prozesses teilen sich die Ressourcen, die zusammen als Prozess bezeichnet werden. Da Threads Ressourcen gemeinsam nutzen, kann ein Thread diese ändern. Wenn ein Thread Daten im Speicher ändert, haben andere Threads sofort Zugriff auf die geänderten Daten.

Vorteile von Threads

Verbraucht weniger Zeit für die Erstellung und Beendigung im Vergleich zu Prozessen.

Zustände von Threads

Erzeugung, Sperren, Entsperren, Beendigung (Freigabe des Kontexts und der Ressourcen).

Konzepte der Prozessverwaltung

Asynchronität

Die Ausführung erfolgt unabhängig voneinander.

Multiprogrammierung

Bezeichnet die Verwaltung mehrerer Prozesse in einem Ein-Prozessor-System.

Multiprocessing

Bezeichnet die Verwaltung mehrerer Prozesse in einem Mehr-Prozessor-System.

Herausforderungen bei der Prozessverwaltung

Die Verwaltung von Prozessen umfasst eine Vielzahl von Design-Problemen, darunter die Interprozesskommunikation, den Austausch und die Konkurrenz um Ressourcen, die Synchronisation der Ausführung mehrerer Prozesse und die Zuweisung von Prozessorzeit. Diese Herausforderungen treten nicht nur in Multiprozessor- und verteilten Umgebungen auf, sondern auch in Multiprogramm-Systemen mit einem einzigen Prozessor. Mehrere Prozesse teilen sich Ressourcen.

Interprozesskommunikation (IPC)

Mechanismen, die es Prozessen ermöglichen, miteinander zu kommunizieren, Daten auszutauschen und Ressourcen gemeinsam zu nutzen oder um sie zu konkurrieren.

Unterbrechungen

Ereignisse, die den normalen Ablauf eines Programms unterbrechen und die CPU veranlassen, eine spezielle Routine auszuführen. Arten: Timer, E/A, Software/Benutzer, Hardware.

Zombie-Prozess

Ein Prozess, der seine Ausführung beendet hat, dessen Eintrag in der Prozesstabelle aber noch existiert, da der Elternprozess seinen Beendigungsstatus noch nicht abgefragt hat. Er benötigt nur minimale Ressourcen, kann aber erst vollständig entfernt werden, wenn der Elternprozess ihn 'abholt'.

Betriebssystemarchitekturen

Mikrokernel

Ein kleiner, allgemeiner Teil eines Betriebssystems, der nur die wesentlichen Funktionen enthält. Vorteile: Einheitliche Schnittstellen für Zugriffe durch Prozesse. Erweiterbarkeit. Flexibilität. Portabilität. Zuverlässigkeit. Unterstützung verteilter Systeme. Objektorientiertes Design.

Synchronisation und Deadlocks

Kritischer Bereich

Ein Abschnitt im Code, in dem ein Prozess auf gemeinsam genutzte Ressourcen zugreift. Nur ein Prozess darf sich gleichzeitig in seinem kritischen Bereich befinden, um Datenkonsistenz zu gewährleisten.

Deadlock und verwandte Probleme

Zustand, bei dem zwei oder mehr Prozesse auf Ressourcen warten, die von den anderen Prozessen gehalten werden, wodurch ein Teufelskreis entsteht.

Wettlaufbedingung (Race Condition)

Mehrere Prozesse greifen gleichzeitig auf eine gemeinsame Ressource zu, und das Endergebnis hängt von der genauen Reihenfolge der Ausführung ab.

Verhungern (Starvation)

Ein Prozess wird dauerhaft daran gehindert, auf eine benötigte Ressource zuzugreifen, obwohl diese verfügbar wird.

Bedingungen für einen Deadlock

Für einen Deadlock müssen typischerweise vier Bedingungen gleichzeitig erfüllt sein (Coffman-Bedingungen):

Gegenseitiger Ausschluss (Mutual Exclusion)

Ressourcen können nicht gleichzeitig von mehreren Prozessen genutzt werden.

Halten und Warten (Hold and Wait)

Ein Prozess hält mindestens eine Ressource und wartet auf weitere, die von anderen Prozessen gehalten werden.

Keine Verdrängung (No Preemption)

Ressourcen können einem Prozess nicht zwangsweise entzogen werden.

Zirkuläres Warten (Circular Wait)

Eine Kette von Prozessen existiert, bei der jeder auf eine Ressource wartet, die vom nächsten in der Kette gehalten wird.

Vermeidung von Deadlocks

Kann durch die Verhinderung des Eintretens einer oder mehrerer der vier notwendigen Bedingungen erreicht werden.

Verwandte Einträge: