Die Umwandlung eines Programms in einen Prozess umfasst mehrere wichtige Schritte:
1. Zusammenstellung (oder Interpretation): Ein Programm, das in einer hochrangigen Sprache (wie C ++, Java, Python) geschrieben wurde, muss in maschinenverständliche Anweisungen übersetzt werden. Dies geschieht auf zwei Hauptarten:
* Zusammenstellung: Der Compiler übersetzt das gesamte Programm in eine vollständige ausführbare Datei (z. B. eine `.exe` -Datei unter Windows oder eine Binärdatei unter Linux/macOS). Diese ausführbare Datei enthält Maschinencode, die für die Architektur des Zielcomputers spezifisch sind.
* Interpretation: Ein Interpreter übersetzt und führt die Programmzeile nach Zeile übersetzt und führt aus, ohne eine separate ausführbare Datei zu erstellen. Dies ist langsamer als die Zusammenstellung, bietet aber mehr Unabhängigkeit von Plattformen. Sprachen wie Python und JavaScript werden typischerweise interpretiert (obwohl die Zusammenstellung von Just-in-Time häufig zur Verbesserung der Leistung verwendet wird).
2. Laden: Der Lader des Betriebssystems ist dafür verantwortlich, die ausführbare Datei des Programms in den Speicher zu laden. Dies beinhaltet:
* Finden Sie die ausführbare Datei: Der Loader findet die Programmdatei auf dem Speichergerät (Festplatte, SSD usw.).
* Speicher zuweisen: Es reserviert Platz im RAM des Computers für den Code, die Daten und den Stack des Programms. Der Stapel wird für temporäre Daten und Funktionsaufrufe verwendet. Der Heap wird für dynamisch zugewiesenes Speicher verwendet.
* Umzug: Der Loader passt Speicheradressen innerhalb des Programms an, um seinen tatsächlichen Standort im RAM widerzuspiegeln.
* Verknüpfung: Wenn das Programm externe Bibliotheken oder Module verwendet, verknüpft das Loader sie mit dem Programm.
3. Erstellung des Prozesssteuerblocks (PCB): Das Betriebssystem erstellt eine PCB, eine Datenstruktur, die alle zur Verwaltung des Prozesses erforderlichen Informationen enthält. Diese Informationen umfassen:
* Prozess -ID (PID): Eine eindeutige Kennung für den Prozess.
* Programmzähler: Zeigt auf den nächsten Anweisungen, der ausgeführt wird.
* CPU -Register: Speichern Sie temporäre Daten, die von der CPU verwendet werden.
* Speicherverwaltungsinformationen: Details zum Speicher, der dem Prozess zugeordnet ist.
* I/O -Status: Informationen über die I/A -Operationen des Prozesses.
* Zustand: Gibt an, ob der Prozess ausgeführt, bereit, blockiert usw. ist.
4. Ausführung: Sobald das Programm geladen und die PCB erstellt wurde, weist der Scheduler des Betriebssystems den Prozess einem CPU -Kern zu. Die CPU holt dann Anweisungen aus dem Programmcode im Speicher, führt sie aus und aktualisiert die PCB entsprechend. Der Prozess wird fortgesetzt, bis er abgeschlossen ist oder beendet wird.
Kurz gesagt, ein Programm ist eine statische Reihe von Anweisungen, während ein Prozess eine dynamische Instanz eines Programms in der Ausführung ist. Der Prozess verfügt über einen eigenen Speicherplatz, seine Ressourcen und eine vom Betriebssystem verwaltete PCB. Mehrere Prozesse können gleichzeitig ausgeführt werden (wenn auch nicht unbedingt gleichzeitig auf einer Einzelkern-CPU).