GNU/Linux >> Tutoriels Linux >  >> Linux

Comment la copie sur écriture dans fork() gère-t-elle plusieurs fourches ?

Si fork est appelé plusieurs fois à partir du processus parent d'origine, chacun des enfants et le parent auront leurs pages marquées en lecture seule. Lorsqu'un processus enfant tente d'écrire des données, la page du processus parent est copiée dans son espace d'adressage et la page copiée est marquée comme inscriptible dans l'enfant mais pas dans le parent.

Si fork est appelée depuis le processus enfant et que le petit-enfant tente d'écrire, la page du parent d'origine est copiée dans le premier enfant, puis dans le petit-enfant, et tout est marqué comme accessible en écriture.


La page d'origine n'est marquée inscriptible que si elle appartient à un seul processus, ce qui pourrait ne pas être le cas s'il y avait plusieurs fourches. La nouvelle page est toujours marquée comme accessible en écriture car elle n'appartient qu'au processus qui a tenté de l'écrire.


Linux
  1. Fonctionnement du cycle de vie des processus Linux - processus parent, enfant et init

  2. Comment définir le répertoire de travail du processus parent ?

  3. Comment fonctionne copy_from_user du noyau Linux en interne ?

  4. Comment tuer le processus zombie

  5. Comment obtenir un processus enfant à partir d'un processus parent

Comment tuer un processus sous Linux

Comment afficher les PPID sous Linux

Comment obtenir le PID parent d'un processus donné sous GNU/Linux à partir de la ligne de commande ?

Comment démarre PulseAudio ?

Comment Linux conserve-t-il le contrôle du processeur sur une machine monocœur ?

Comment tuer un processus <defunct> avec le parent 1