ciao
qualcuno mi sa rispondere a questa domanda?
se A crea B con fork
a B viene allocato il codice in memoria? oppure no perchè perchè il codice di A è condiviso in sola lettura e quindi B alloca solo dati e pila??
Grazie
ciao
qualcuno mi sa rispondere a questa domanda?
se A crea B con fork
a B viene allocato il codice in memoria? oppure no perchè perchè il codice di A è condiviso in sola lettura e quindi B alloca solo dati e pila??
Grazie
Ciao,
prima di postare una domanda (soprattutto una di teoria come questa) conviene sempre fare una ricerca sul web. Ad esempio su Wikipedia dice testualmente
Quando un processo effettua la chiamata fork() verrà creato un nuovo spazio di indirizzamento. Comunque, con tecniche di copy-on-write non verrà occupata memoria fisica fino al momento in cui uno dei due processi non effettuerà una scrittura. Il processo figlio avrà una copia esatta di tutti i segmenti di memoria del processo padre. Sia il processo padre che il figlio possono proseguire la loro esecuzione indipendentemente l'uno dall'altro.
Vorrei integrare quanto scritto su wikipedia, perchè non si capisce bene che fine faccia il segmento code.
Ovviamente è condiviso tra i due processi, ovvero è fisicamente allocato in memoria una sola volta, ma è mappato ovviamente in entrambi gli spazi d'indirizzamento. Il copy on write chiaramente non interverrà mai su tale segmento, in quanto ( essendo in sola lettura ) non verrà mai modificato.
Tutti gli altri segmenti sono invece soggetti alle politiche di copy on write.
eh infatti percio avevo dei dubbi, non mi era chiaro se il codice veniva allocato piu volte