· 

Algorithmus, Programm und Prozess

1. Einführung

Algorithmen, Programme und Prozesse sind in der Informatik verschiedene Konzepte, die sich an einigen Stellen unterscheiden.


2. Algorithmus

Ein Algorithmus ist (vereinfacht ausgedrückt) eine fest definierte und endliche Vorgehensweise, mit der ein Problem gelöst werden kann. Probleme sind quasi omnipräsent und es ist unsere Aufgabe als Menschen, diese Probleme anzugehen und zu lösen. Seien es die Behandlung von Krankheiten, fehlerhafte Software oder das Backen leckerer Muffins. Ein Algorithmus erfüllt die folgenden Eigenschaften:

  • Eindeutigkeit Ein Algorithmus darf keine widersprüchliche Beschreibung besitzen oder Schritte definieren, die logisch nicht miteinander vereinbar sind.
  • Finitheit Der Algorithmus muss mit endlich vielen Worten und Zeichen beschrieben werden können.
  • Terminierung Ein Algorithmus musss in endlich vielen Schritten terminieren (d. h. irgendwann zu einem Ende kommen) und ein Ergebnis liefern.
  • Determinismus Es muss zu jedem Zeitpunkt in der Abarbeitung klar sein, welcher Schritt als nächstes folgt. Es besteht also bei jedem Schritt höchstens ein Folgeschritt.
  • Determiniertheit Bei gleicher Eingabe liefert ein Algorithmus reproduzierbar das gleiche Ergebnis. 
  • Ausführbarkeit Die einzelnen Schritte im Algorithmus müssen - für Mensch oder Maschine - verständlich formuliert und ausführbar sein.

3. Programm

Ein Programm ist die Formulierung bzw. Darstellung eines Algorithmus. Diese Formulierung beschreibt in endlicher Form, welche Operationen in welcher Reihenfolge ausgeführt werden sollen. Der Quellcode bzw. Programmtext ist die vollständige Beschreibung des Programms. Programme können in sich parallel oder sequentiell sein, d. h. Teile des Algorithmus laufen parallel oder hintereinander ab. Dies hat Einfluss auf die Laufzeit des Algorithmus. Sequentiell bedeutet, dass zu jedem Zeitpunkt höchstens eine Anweisung des Programms ausgeführt wird. 


4. Prozess

Wenn ein Programm von einem Prozessor abgearbeitet wird, dann reicht der Quellcode zur vollständigen Beschreibung nicht mehr aus. Der Prozessor weiß über den Befehlszähler, welche Operation als nächstes auszuführen ist. Der Befehlszähler selbst ist nicht im Programm implementiert, sondern ist Teil des Kontextes, in dem das Programm ausgeführt wird. Zu diesem Kontext gehören auch Registerinhalte, die im Laufe des Programms berechnete Daten beinhalten. Der Quellcode befindet sich für gewöhnlich auf sekundären Speichern (z. B. Festplatten). Demgegenüber findet die Ausführung des durch den Quellcode beschriebenen Programms im Hauptspeicher statt. Ein Prozess ist also ein ablaufendes Programm samt aktuellen Werten des Befehlszählers, Variablenbelegungen und Registerinhalten. Daraus lässt sich schlussfolgern, dass ein Prozess dynamisch und ein Programm statisch ist.

 


5. Unterschiede und Illustration

Betrachten wir die Begriffe Algorithmus, Programm, Prozessor und Prozess an zwei Beispielen aus dem Alltag:

Wenn du leckere Muffins backen möchtest, dann hast du für gewöhnlich ein Kochbuch o. ä., in dem ein Rezept für die Zubereitung der Muffins steht. Dort sind auch alle Zutaten enthalten. Das Rezept entspricht in diese Analogie dem Programm und ist eine Darstellung des Muffin-Algorithmus. Der Mensch, der nach dem Rezept die Muffins backt, ist der Prozessor, die Zutaten sind die Eingabedaten und der Vorgang des Muffinbackens entspricht dem Prozess.

Zweites Beispiel: Wenn du ein LEGO®-Set aufbauen möchtest, dann hast du für gewöhnlich eine Anleitung, die dem Programm entspricht. Derjenige, der das LEGO®-Set aufbaut, ist der Prozessor, die LEGO®-Steine sind die Eingabedaten und der Vorgang des Aufbauens entspricht dem Prozess.

Anhand dieser beiden Analogien ist erkennbar, dass mehrere Prozesse dasselbe Programm ausführen können. Schließlich können verschiedene Menschen dasselbe Muffin-Rezept nachbacken oder dieselbe Anleitung zum Aufbau eines LEGO®-Sets verwenden. Diese Prozesse unterscheiden sich voneinander, da nicht jeder Mensch zu jedem Zeitpunkt dieselben Schritte ausführt wie andere, die nach demselben Rezept backen. Es kann sein, dass ein Hobby-Bäcker bereits die Muffin-Form befüllt, während ein anderer noch die Zutaten zusammenrührt. Ein Prozessor (Mensch) kann außerdem zwischen verschiedenen Prozessen hin- und herschalten (sie also quasi-parallel ausführen). So ist es durchaus möglich, beim LEGO®-Bauen Muffins zu backen. Man kann aber auf einem Prozessor nie echt- parallel verschiedene Prozesse ausführen. Dies funktioniert nur mit mehreren Prozessoren (Multi-Kern-Systemen).