El Mié 26 Nov 2008, Diego Woitasen escribió:
> 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.

Malditos derrochones de bits!


> > 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

Ah, a ver...
Mmm... En casi ningún proceso puedo ver nada...
Ah, claro, porque no son míos. A ver como root...
Bien. Uff, qué cantidad de mierdas que cargan los programas!

-- 
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

Responder a