GNU/Linux >> Linux Esercitazione >  >> Linux

In che modo copy-on-write in fork() gestisce più fork?

Se fork viene chiamato più volte dal processo genitore originale, quindi ciascuno dei figli e del genitore avrà le proprie pagine contrassegnate come di sola lettura. Quando un processo figlio tenta di scrivere dati, la pagina del processo padre viene copiata nel suo spazio degli indirizzi e la pagina copiata viene contrassegnata come scrivibile nel figlio ma non nel genitore.

Se fork viene chiamato dal processo figlio e il nipote tenta di scrivere, la pagina del genitore originale viene copiata nel primo figlio, quindi nel nipote e tutto viene contrassegnato come scrivibile.


La pagina originale è contrassegnata come scrivibile solo se appartiene a un singolo processo, il che potrebbe non essere il caso se fossero presenti più fork. La nuova pagina è sempre contrassegnata come scrivibile perché appartiene solo al processo che ha tentato di scriverla.


Linux
  1. Linux:in che modo Node.js / Il modulo cluster passa le nuove connessioni dal processo principale / principale ai processi secondari?

  2. Come funziona il ciclo di vita dei processi Linux:processo padre, figlio e inizializzazione

  3. Come far morire il processo figlio dopo che il genitore è uscito?

  4. Come uccidere il processo di zombi

  5. Come ottenere il processo figlio dal processo padre

Come uccidere un processo in Linux

Come visualizzare i PPID in Linux

Come imposto la directory di lavoro del processo genitore?

Nello specifico, in che modo fork() gestisce la memoria allocata dinamicamente da malloc() in Linux?

Come funziona internamente copy_from_user dal kernel di Linux?

Come si avvia PulseAudio?