2005/03/03

Areas de memoria iguales para procesos diferentes

Dos procesos del mismo programa en C corriendo en background:

#X1
skywalker:/tmp# pmap 14718
14718: ./x
08048000 4K r-x-- /tmp/x
08049000 4K rw--- /tmp/x
40000000 88K r-x-- /lib/ld-2.3.2.so
40016000 4K rw--- /lib/ld-2.3.2.so
40017000 8K rw--- [ anon ]
40023000 1184K r-x-- /lib/libc-2.3.2.so
4014b000 32K rw--- /lib/libc-2.3.2.so
40153000 12K rw--- [ anon ]
bffff000 4K rwx-- [ stack ]
total 1340K


#X2
skywalker:/tmp# pmap 14719
14719: ./x
08048000 4K r-x-- /tmp/x
08049000 4K rw--- /tmp/x
40000000 88K r-x-- /lib/ld-2.3.2.so
40016000 4K rw--- /lib/ld-2.3.2.so
40017000 8K rw--- [ anon ]
40023000 1184K r-x-- /lib/libc-2.3.2.so
4014b000 32K rw--- /lib/libc-2.3.2.so
40153000 12K rw--- [ anon ]
bffff000 4K rwx-- [ stack ]

skywalker:/tmp# pmap 14719 > x1
skywalker:/tmp# pmap 14718 > x2
skywalker:/tmp# diff x1 x2
1c1
<>
---
> 14718: ./x
Son exactamente iguales. Por que? Mi hipotesis: Es que esas direcciones de memoria son logicas y luego el sistema de administración de memoria del sistema operativo las traduce a direcciones de memoria fisicas.

1 Comments:

At 12:27 p. m., Blogger Juan Alvarez said...

Mis sospechas son correctas. En http://www.skynet.ie/~mel/projects/vm/guide/html/understand/node29.html se puede apreciar que cada proceso tiene un espacio lineal de direcciones virtual, por eso es que vemos los mismos numeros de memoria para procesos diferentes. Posteriormente cuando se esta trabajando con el proceso en cuestion, ocurre traduccion de direcciones de memoria "logicas" a traduccion de direcciones de memoria fisicas, ayudandose por el TLB y otros enyerbes.

 

Publicar un comentario

<< Home