GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie behandelt Copy-on-Write in fork() mehrere Forks?

Wenn fork mehrmals vom ursprünglichen übergeordneten Prozess aufgerufen wird, werden die Seiten aller untergeordneten und übergeordneten Prozesse als schreibgeschützt markiert. Wenn ein untergeordneter Prozess versucht, Daten zu schreiben, wird die Seite des übergeordneten Prozesses in seinen Adressraum kopiert, und die kopierte Seite wird im untergeordneten Prozess als beschreibbar markiert, jedoch nicht im übergeordneten Prozess.

Wenn fork vom Kindprozess aufgerufen wird und das Enkelkind versucht zu schreiben, wird die Seite des ursprünglichen Elternteils auf das erste Kind und dann auf das Enkelkind kopiert, und alles wird als beschreibbar markiert.


Die Originalseite wird nur dann als beschreibbar markiert, wenn sie zu einem einzelnen Prozess gehört, was bei mehreren Forks möglicherweise nicht der Fall ist. Die neue Seite wird immer als beschreibbar markiert, da sie nur zu dem Prozess gehört, der versucht hat, sie zu schreiben.


Linux
  1. Wie kann man einen untergeordneten Prozess sterben lassen, nachdem der übergeordnete Prozess beendet wurde?

  2. Wie lege ich das Arbeitsverzeichnis des übergeordneten Prozesses fest?

  3. Wie verzweige ich einen Prozess, der nicht stirbt, wenn die Shell beendet wird?

  4. Mehrere Standardeingaben? Wie?

  5. Wie startet PulseAudio?

So beenden Sie einen Prozess in Linux

So zeigen Sie PPIDs unter Linux an

So beenden Sie den Zombie-Prozess

So erhalten Sie einen untergeordneten Prozess aus einem übergeordneten Prozess

Wie erhalte ich die übergeordnete PID eines bestimmten Prozesses in GNU/Linux von der Befehlszeile aus?

Wie behält Linux die Kontrolle über die CPU auf einem Single-Core-Rechner?