Categories: Allgemein

6 Unterschied zwischen Fork ( ) und Exec ( )

Contents

Was ist Gabel ( )?

Fork ist eine Funktion im UNIX-Betriebssystem, die verwendet wird, um ein Duplikat eines bestimmten Prozesses zu erzeugen, indem zwei gleichzeitig ausgeführte Prozesse eines Programms erstellt werden. Diese beiden Prozesse werden normalerweise als “Eltern-” und “Kind”-Prozesse bezeichnet. Sie verwenden Multitasking-Protokolle, um Systemressourcen gemeinsam zu nutzen.

Wenn fork einen neuen Prozess durch Kopieren des aktuellen Prozesses erstellt, führt es ein Copy-O-Write durch. Dies bedeutet, dass der Speicher des neuen Prozesses mit dem Elternprozess geteilt wird, bis er geändert wird. Wenn der Speicher geändert wird, wird der Speicher kopiert, um sicherzustellen, dass jeder Prozess seine eigene gültige Kopie des Speichers hat.

Was Sie über Gabel wissen müssen

  1. Fork ist eine Funktion im UNIX-Betriebssystem, die verwendet wird, um ein Duplikat eines bestimmten Prozesses zu erzeugen, indem zwei gleichzeitig ausgeführte Prozesse eines Programms erstellt werden.
  2. Der Fork-Systemaufruf erzeugt eine Duplikatkopie des aufrufenden Prozesses.
  3. Der durch einen Fork-Systemaufruf erzeugte neue Prozess ist in fast jeder Hinsicht mit dem Elternprozess identisch.
  4. Nach dem Fork-Systemaufruf werden sowohl der Kind- als auch der Elternprozess gleichzeitig ausgeführt.
  5. In fork befinden sich der übergeordnete und der untergeordnete Prozess in unterschiedlichen Adressräumen.
  6. Beispiel: int process_id=fork();

Was ist Exec ( )?

Exec ist eine Funktionalität eines Betriebssystems, die eine ausführbare Datei im Kontext eines bereits vorhandenen Prozesses ausführt und die vorherige ausführbare Datei ersetzt. Dieser Vorgang wird auch als Overlay bezeichnet. Es ist besonders wichtig in Unix-ähnlichen Systemen, obwohl es an anderer Stelle existiert. Da kein neuer Prozess erstellt wird, ändert sich die Prozesskennung nicht, aber Maschinencode, Datenhaufen und Stack des Prozesses werden durch die des neuen Programms ersetzt.

Der exec-Systemaufruf wird verwendet, um eine Datei auszuführen, die sich in einem aktiven Prozess befindet. Beim Aufruf von exec wird die vorherige ausführbare Datei ersetzt und die neue Datei ist ausführbar. Genauer gesagt können wir sagen, dass die Verwendung des exec-Systemaufrufs die alte Datei oder das Programm aus dem Prozess durch eine neue Datei oder ein neues Programm ersetzt.  

Was Sie über Exec wissen müssen 

  1. Exec ist eine Operation in einem UNIX-Betriebssystem, die einen Prozess erstellt, indem sie den vorherigen Prozess ersetzt.
  2. Der Systemaufruf exec dient dazu, die gesamten aktuellen aufrufenden Prozesse durch ein neues Programm insgesamt zu ersetzen.
  3.  Das neue Programm, das den aktuellen Prozess ersetzt, wird geladen und vom Einstiegspunkt aus ausgeführt.
  4. Nach dem exec-Systemaufruf wird die Kontrolle nie an das ursprüngliche Programm übergeben, bis kein exec()-Fehler auftritt.
  5. In Exec ersetzt der untergeordnete Adressraum den übergeordneten Adressraum.
  6. Beispiel: int execvp (const char *file_name, char*const argv[])

Unterschied zwischen Fork und Exec in Tabellenform

VERGLEICHSGRUNDLAGEGABELEXEC
BeschreibungFork ist eine Funktion im UNIX-Betriebssystem, die verwendet wird, um ein Duplikat eines bestimmten Prozesses zu erzeugen, indem zwei gleichzeitig ausgeführte Prozesse eines Programms erstellt werden.  Exec ist eine Operation in einem UNIX-Betriebssystem, die einen Prozess erstellt, indem sie den vorherigen Prozess ersetzt.  
SystemaufrufDer Fork-Systemaufruf erzeugt eine Duplikatkopie des aufrufenden Prozesses.  Der Systemaufruf exec dient dazu, die gesamten aktuellen aufrufenden Prozesse durch ein neues Programm insgesamt zu ersetzen.  
Neuer Prozess/ProgrammDer durch einen Fork-Systemaufruf erzeugte neue Prozess ist in fast jeder Hinsicht mit dem Elternprozess identisch.  Das neue Programm, das den aktuellen Prozess ersetzt, wird geladen und vom Einstiegspunkt aus ausgeführt.  
Nach SystemaufrufNach dem Fork-Systemaufruf werden sowohl der Kind- als auch der Elternprozess gleichzeitig ausgeführt.  Nach dem exec-Systemaufruf wird die Kontrolle nie an das ursprüngliche Programm übergeben, bis kein exec()-Fehler auftritt.  
Eltern- und KindprozesseIn fork befinden sich der übergeordnete und der untergeordnete Prozess in unterschiedlichen Adressräumen.  In Exec ersetzt der untergeordnete Adressraum den übergeordneten Adressraum.  
Beispielint execvp (const char *file_name, char*const argv[])int execvp (const char *file_name, char*const argv[])
osky

Recent Posts

Was ist der Unterschied zwischen Yoga und Pilates

Fühlen Sie sich oft gestresst, verspannt und auf der Suche nach einer Lösung für Ihr…

3 Wochen ago

Was ist der Unterschied zwischen Kaffee und Espresso?

Haben Sie sich jemals gefragt, warum Ihr Morgenkaffee anders schmeckt als der Espresso aus Ihrem…

3 Wochen ago

Freeway vs. Highway: Ein detaillierter Blick auf die Feinen Unterschiede im Straßenverkehr

Einleitung: Die Begriffe "Freeway" und "Highway" werden oft synonym verwendet, aber es gibt subtile Unterschiede…

1 Jahr ago

Burrito vs. Enchilada: Die Feinen Unterschiede Zwischen Zwei Klassikern der Mexikanischen Küche

Burritos und Enchiladas sind zwei beliebte Gerichte der mexikanischen Küche, die oft miteinander verwechselt werden.…

1 Jahr ago

Ein umfassender Vergleich zwischen Replikation und Transkription

In der Zellbiologie spielen Replikation und Transkription entscheidende Rollen im genetischen Prozess. Beide sind Mechanismen,…

1 Jahr ago

Verständnis des Unterschieds zwischen Osmose und Diffusion

Osmose und Diffusion sind zwei grundlegende Prozesse, die in der Zellbiologie und Chemie eine entscheidende…

1 Jahr ago