Domanda

Dopo forchette di processo e l'invoca figlio biforcuta execv, è il risultato ancora il figlio del padre?

È stato utile?

Soluzione

fork crea un nuovo processo chiamato il figlio del GENITORE ..... sostituisce exec del programma in esecuzione corrente con il processo di exec'd e quindi rimane il processo figlio del genitore ...

Altri suggerimenti

Sì. execv non crea un nuovo processo - è per questo che avete bisogno di sborsare prima

.

Sì, lo è. Anche la terminologia "famiglia processo" è pericolosamente vicino al "gruppo di processi", che è piuttosto un concetto importante.

Sei sulla strada giusta. Fondamentalmente, il forcella (2) chiamata di sistema nella vecchia UNIX creata una copia il processo che, con un nuovo PID e una nuova pila processo, copiando lo spazio di memoria per farlo. Il exec carichi il processo esistente con una nuova immagine. Si può vedere una versione che nell'operazione exec nella maggior parte delle conchiglie -. È uns l'immagine desiderata nel processo che è stata occupata dalla shell

Quando si fork di un processo, la chiamata di sistema fork restituito il PID del nuovo processo, se sei il genitore, o 0 se sei il bambino. Il processo figlio eredita anche tutti i descrittori di file aperti, in particolare 0,1 e 2, che sono più comunemente conosciuto come STDIN, STDOUT e STDERR.

(quiz Pop: come pensi che un guscio gestisce reindirizzamento, ad esempio con >)

Più moderna UNIX varianti con spazi di indirizzi più grandi (l'originale UNIX aveva solo 64K totale parole!) Loro esecuzione variante forcella chiamato vfork che solo le copie la necessaria sottoinsieme del processo per iniziare la corsa, e dipende il gestore di memoria per tirare il resto, se necessario. Poiché la maggior parte volte forcella è immediatamente seguito da exec, che deve caricare una nuova immagine ogni caso, si tratta di una significativa ottimizzazione.

Mach richiede che un ulteriore passo avanti; quando si crea un nuovo pprocess, nulla è copiato, tranne quello che serve per un contesto di esecuzione; l'immagine è esattamente lo stesso. Copiando accade solo quando il processo cambia una locazione di memoria, a questo punto viene copiata la pagina, contenente tale posizione. Questo è chiamato "copy on write", ed è quasi ottimale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top