Re: fork e memoria
twiz <[email protected]> Fri, 3 Dec 2004 23:09:20 +0100 (CET)
| Newsgroups | gmane.comp.security.italian.devel |
|---|---|
| Message-ID | <[email protected]> |
On Fri, 3 Dec 2004, Andrea Proli wrote:
> Ciao,
> credo di conoscere la soluzione al tuo problema, spero di non sbagliarmi.
> Un processo figlio non puo' condividere lo stesso spazio di indirizzament=
o
> del processo padre, ad ogni processo vengono assegnati spazi di
> indirizzamento
> indipendenti: ovvero, l'indirizzo logico 0x80498f0 del processo figlio e'
> mappato dal
> gestore della memoria virtuale in un indirizzo fisico diverso da quello i=
n
> cui viene
> mappato l'indirizzo logico 0x80498f0 del processo padre...
> In altre parole i due puntatori (o meglio, lo stesso puntatore x nei due
> processi)
> puntato a zone di memoria *fisiche* differenti, per questo le modifiche
> nell'area di memoria
> del processo figlio non si ripercuotono sull'area di memoria del processo
> padre.
> Quando la fork() crea il processo figlio *copia* anche le variabili nella
> memoria
> del padre in quella del figlio, per cui ti sembra di vedere *lo stesso*
> spazio di memoria
> ma lo spazio di memoria =E8 solo *uguale* (o quasi!), non =E8 *lo stesso*=
=2E
Non esattamente. fork() viene generalmente (es. Linux, FreeBSD)
implementata usando pagine COW (Copy on Write), quindi "lo spazio
di memoria" e' lo stesso per i due processi finche' vi accedono
unicamente in "lettura" (senza modificarlo).
twiz
________________________________________________________
http://www.sikurezza.org - Italian Security Mailing List