On Fri, Nov 21, 2008 at 12:02:55AM -0300, Herr Groucho wrote:
> El Jue 20 Nov 2008, Rodrigo Fuentealba escribió:
> > El día 20 de noviembre de 2008 22:44, Herr Groucho
> > <[EMAIL PROTECTED]> escribió:
> > > El Mié 19 Nov 2008, Rodrigo Fuentealba escribió:
> > >> 2008/11/19 MAbeeTT <[EMAIL PROTECTED]>:
> > >> > 2008/11/19 Jimmy . <[EMAIL PROTECTED]>:
> > >> >> On Wed, Nov 19, 2008 at 6:42 PM, MAbeeTT <[EMAIL PROTECTED]>
> > > wrote:
> > >> >>> On Wed, Nov 19, 2008 at 9:33 PM, Rodrigo Fuentealba
> > >> >>> <[EMAIL PROTECTED]> wrote:
> [...]
> > >> > Donde dice "nada" va "Nada útil"
> > >> Entonces se declara como un puntero y se apunta a NULL.
> > >> Si sigues leyendo el puntero, sólo tendrás basura.
> > >
> > > Si la posción de memoria 0 contiene sólo basura, para qué
> > > implementarla por hardware? Que se ahorren esos bits y los usen
> > > para otra cosa!
> >
> > En memorias DIMM podría, eventualmente, contener sólo basura.
> > En las SIMM se inicializan desde cero, y para acelerar un poco el
> > proceso, sólo se borra el índice de lo que contienen, por lo que si
> > lees la posición de memoria de manera directa sin pasar por cero,
> > eventualmente tendrás basura de todas maneras hasta encontrar una
> > condición de aborto. En el peor de los casos no es basura y es
> > información perteneciente a otros programas (y si la llegas a
> > intentar tocar, en Linux el programa aborta con un lindo "Violación
> > de Segmento").
> >
> > Si?
> 
> No. Primero, porque es la memoria virtual de un proceso en particular, 
> así que la dirección 0 del espacio de direcciones de ese proceso será 
> alguna dirección múltiplo del tamaño de página en esa máquina y no 
> necesariamente la dirección física 0.
> Segundo, porque el sistema operativo (si el kernel es Linux al menos) 
> inicializa las páginas que asigna a un proceso rellenándolas con 0 
> para que los procesos no adquieran conocimiento de los datos de otros 
> procesos (posiblemente terminados) a los que recientemente 
> pertenecían esas páginas (y de paso para que los programas mal hechos 
> que usan datos sin inicializarlos tengan un comportamiento más 
> definido).
> Tercero, porque a menos que eviten usar la dirección 0 
> deliberadamente, algún pedazo de alguna sección de la imagen del 
> proceso ca a estar almacenado allí, por ejemplo, instrucciones del 
> código de programa.
> Cuarto, porque bien podría ser el caso que si la página a la que 
> pertenece la dirección virtual 0 del proceso contiene código, que 
> esté protegida contra lectura y ahí el proceso está impedido de leer 
> su propio código como dato almacenado en la dirección 0 así que nunca 
> llegará a leer lo que haya ahí, basura o no basura.
> 
> Y esas son las razones por las que traje el theard a lug-list.
> Pregunta:
> Qué hay almacenado en la dirección 0 del especio de direcciones de un 
> proceso creado por Linux?

Nada, no se usa es dirección.

> O sea, cómo se mapean las secciones de un ejecutable al espacio de 
> direcciones al cargar la imagen?

Podes ver un ejemplo con cualquier proceso en /proc/PID/maps

> 
> -- 
> Herr Groucho
> 
> ID Jabber: [EMAIL PROTECTED]
> Señal distintiva: LU5MJR - 144,550 MHz FM.
> Clave pública GPG: hkp://pks.lugmen.org.ar
> Fingerprint GPG: B7BD 0FC7 D9A2 66F3 4EFC  45EE 7DE2 3932 597B 6354

saludos!

-- 

--------------
Diego Woitasen

Responder a