Durante la chiamata di sistema fork che esegue il primo genitore o figlio [chiuso]

-1

Mentre eseguo un esempio one pipe pgm da libc.pdf, ho notato che il processo genitore ha completato prima solo il processo figlio completato. Dal mio esperto su os il processo figlio deve essere completato prima del completamento del genitore.so cosa succede qui

    
posta ksivasuriyaprakash 30.04.2016 - 18:44
fonte

2 risposte

3

Non puoi sapere, e su un sistema multi-core entrambi i processi possono essere eseguiti simultaneamente (su diversi core). Nota che preemption (e interruttori di contesto ) può accadere in qualsiasi tempo (anche" nel mezzo "di un'istruzione C, compilata su una dozzina di codice macchina instruzioni), sia su un sistema single-core (molto raro oggi) o multi-core, perché interrompe facendo in modo che le interruzioni di contesto e di contesto vengano eseguite con qualsiasi istruzione di codice macchina.

(dovresti pensare come (quando fork ha esito positivo) sia genitore che figlio eseguono esattamente simultaneamente ; ciò che sta effettivamente accadendo è un dettaglio poco importante e di difficile osservazione da implementare )

Leggi wikipage su fork , poi leggi attentamente pagina man forcella (2) . Leggi anche Advanced Linux Programming che ha diversi capitoli su forking e processi. Leggi anche signal (7) e segnale di sicurezza (7) . Su Linux, esegui cat /proc/interrupts alcune volte (leggi proc (5) ) per capire quanto spesso avvengono gli switch di contesto (di solito ogni millisecondi).

Leggi anche Sistemi operativi: tre pezzi facili .

    
risposta data 30.04.2016 - 19:05
fonte
-3

Sulla maggior parte dei sistemi, il bambino viene eseguito per primo. Questo per evitare il sovraccarico dovuto alla copia in scrittura, poiché il genitore non scrive nello spazio degli indirizzi.

    
risposta data 15.02.2018 - 00:57
fonte

Leggi altre domande sui tag