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
