elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Dudas sobre direccionamiento
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Dudas sobre direccionamiento  (Leído 4,232 veces)
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Dudas sobre direccionamiento
« en: 19 Mayo 2014, 00:23 am »

Hola! Estoy retomando las lecturas de ASM.. y quiero entender bien el asunto del direccionamiento en modo protegido y modo real.. al principio no le di mucha bola,, y el libro me entrevero,, pero ahora me interesa saberlo a fondo..

Aparte,, creo que hay un error gigante en el libro, dice:

Citar
El modo protegido es el estado nativo del procesador, en el que estan disponibles todas las instrucciones y caracteristicas. Los programas reciben areas separadas de memoria llamadas segmentos, y el procesador evita que los programas hagan referencia a la memoria que se encuentra fuera de sus segmentos asignados.

Bien, con la segunda parte todo ok.. pero no es en modo real que están disponibles todas las instrucciones y características??

Bien, despues dice:

Citar
En el modo de direccionamiento real solo puede direccionarse 1MB de memoria, del 00000 al FFFFF hexadecimal. El procesador solo puede ejecutar un programa a la vez, pero puede interrumpir de forma momentánea ese programa para procesar las interrupciones de los periféricos. etc..etc..

Citar
En el modo protegido, el procesador puede ejecutar varios programas al mismo tiempo (nota mía: "al mismo tiempo"). A cada proceso le asigna un total de 4GB de memoria. A cada programa se le puede asignar su propia área reservada de memoria, y los programas no pueden acceder de manera accidental al código y los datos de los demás programas.

¿Por que? Quizás antes solo existían registros de 16bits?
Y la mas importante, cuando dice solo puede direccionarse 1MB de memoria, quiere decir que no importa cuanta RAM tengamos,, solo es accesible 1MB de ella? En cambio en modo protegido se puede acceder hasta 4GB.. por programa? Eso tampoco tienen mucho sentido (como yo lo interpreto) porque eso significaria tener unos pocos programas abiertos..

Gracias por la ayuda! Saludos!!


En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Dudas sobre direccionamiento
« Respuesta #1 en: 19 Mayo 2014, 10:32 am »

Entiendo que quiere decir que es el modo nativo moderno, el modo real esta solo para compatibilidad con un pasado ya bastante remoto.

Si; tenes que leer sobre segmentacion y memoria virtual (un DWORD puede direccionar 4 GB: de 0x0 a 0xFFFFFFFF).

http://en.wikipedia.org/wiki/Real_mode
http://en.wikipedia.org/wiki/Protected_mode


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Dudas sobre direccionamiento
« Respuesta #2 en: 19 Mayo 2014, 20:18 pm »

Igual no capto.. sigo leyendo del libro y de la wikipedia pero no.. No hay una forma sencilla de explicarlo?

Tengo un programa guardado en el disco duro, para poder utilizar ese programa se tiene que cargar en memoria, la paginacion divide el programa (en memoria) en bloques (paginas) que pueden (o no) ser consecutivas.. podemos acceder a esa memoria paginada de la siguiente forma:

8000:0250 donde 8000 es el segmento (pagina??) y el desplazamiento es 250..
¿como decir el párrafo 250 de la hoja 8000?

Dice que la memoria virtual da la ilusión de tener mucha mas RAM de la real.. ¿Por? No es la misma cantidad igual?

Gracias! Saludos!
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Dudas sobre direccionamiento
« Respuesta #3 en: 19 Mayo 2014, 21:00 pm »

Igual no capto.. sigo leyendo del libro y de la wikipedia pero no.. No hay una forma sencilla de explicarlo?

No, tal vez alguien mas didactico que yo pueda, proba con el Windows Internals tambien ... igual si queres saber algo a fondo no hay nada mejor que aprenderlo mediante la practica: agarra un depurador.

Eso es segmentacion no paginacion ... es la misma RAM si, por eso dice ILUSION, el hardware, la memoria FISICA es una sola, pero por ejemplo la direccion base de un PE suele ser 0x00400000 y el O.S. te crea la ilusion de tener muchos programas cargados en esa direccion, cuando en realidad mediante unas tablas en el contexto de cada proceso esa direccion VIRTUAL equivale a una direccion FISICA diferente.
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Dudas sobre direccionamiento
« Respuesta #4 en: 19 Mayo 2014, 21:27 pm »

Ajam.. Algo así creía por ese mismo ejemplo.. casi todos los PE tienen la misma dirección base, cosa que físicamente no puede ser.. Y eso es la paginacion o la segmentacion?

Con respecto a los 4GB por proceso.. ese es el tope que puede utilizar.. pero no se le asigna ese tamaño a cada uno verdad? Sino se quedaría sin RAM el pc..

Evidentemente me estoy planteando mal el funcionamiento.. debe ser mas sencillo de lo que creo, por eso me marea tanto..  :¬¬

Gracias!
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Dudas sobre direccionamiento
« Respuesta #5 en: 19 Mayo 2014, 21:59 pm »

Paginacion.

4 GB es el espacio de direccionable por un DWORD (en x64 es mucho mas), normalmente se parten 2 GB para Modo Usuario y 2 GB para Modo Kernel, y no, no hay memoria RAM suficiente para 2 GB de memoria para cada proceso, cuando se acaba la RAM se usa el disco (eso tambien es paginacion, pagefile.sys en Windows).

http://en.wikipedia.org/wiki/X86_memory_segmentation

Lo elemental: todas las direcciones que vos ves en Windows (o cualquier S.O. moderno en modo protegido) son VIRTUALES. Esas direcciones (incluso las del Kernel que maneja el S.O. normalmente y los drivers) son traducidas a direccion FISICAS (en la RAM).
« Última modificación: 19 Mayo 2014, 22:01 pm por Eternal Idol » En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
xv0


Desconectado Desconectado

Mensajes: 1.026



Ver Perfil
Re: Dudas sobre direccionamiento
« Respuesta #6 en: 19 Mayo 2014, 22:44 pm »

Solamente vengo a decirte de que estoy revisando los tomos de AMD el numero 2, y hay una sección llamada Segemted Virtual Memory, tambien puede que te interese System-Management Mode.

Son muy teoricos, pero no hay otra, cualquier cosa ya sabes, pero despues de los mensajes de @EI no tengo nada que decir, solamente que lectura, cuando hacabe lo que tengo que hacer ya te ayudare, ya que todo esto tambien me interesa.

Un saludo.
En línea

Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Dudas sobre direccionamiento
« Respuesta #7 en: 19 Mayo 2014, 23:09 pm »

Ta.. pero vuelvo al problema de si entonces tengo 16GB de ram,, que negocio? Si se va a direccionar un DWORD.

Si, entendí que cuando se termina la RAM, se cambia/rotan las paginas de la RAM por nuevas leídas del disco..

Citar
Lo elemental: todas las direcciones que vos ves en Windows (o cualquier S.O. moderno en modo protegido) son VIRTUALES. Esas direcciones (incluso las del Kernel que maneja el S.O. normalmente y los drivers) son traducidas a direccion FISICAS (en la RAM).

Aunque cada proceso trabajase como el único en la ram, es guardado secuencialmente (o no) en paginas de 4096 bytes verdad? Por eso todos los procesos pueden arrancar en la misma dirección VIRTUAL, pero claro que en disco están en cualquier dirección, y si no me equivoco se puede realizar un calculo para obtener la dirección FISICA (lo que hace la ram).

En resumidas,, la paginacion establece bloques para poder guardar los procesos (en la ram) en partes, ademas puede rotar las instrucciones a seguir del disco a la ram y así dar esa ilusión de tener mas ram de la real.. luego la segmentación es una forma establecida para poder recorrer la ram sin perderse en el intento.. Algo asi??

@cpu2: Genial! Voy a revisar ese otro a ver si saco algo mas..

Gracias!
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Dudas sobre direccionamiento
« Respuesta #8 en: 19 Mayo 2014, 23:24 pm »

Ta.. pero vuelvo al problema de si entonces tengo 16GB de ram,, que negocio? Si se va a direccionar un DWORD.

x64  ::) Windows de 32 bits no puede direccionar mas que 4 GB (a menos que use PAE).

Si, entendí que cuando se termina la RAM, se cambia/rotan las paginas de la RAM por nuevas leídas del disco..

Hay algoritmos complejos, pero asi a lo bruto se mete en el disco la memoria mas vieja (la que hace mas tiempo fue accedida por ultima vez) y se la recupera desde el disco si el programa intenta leerla nuevamente.

Aunque cada proceso trabajase como el único en la ram, es guardado secuencialmente (o no) en paginas de 4096 bytes verdad? Por eso todos los procesos pueden arrancar en la misma dirección VIRTUAL, pero claro que en disco están en cualquier dirección, y si no me equivoco se puede realizar un calculo para obtener la dirección FISICA (lo que hace la ram).

Si. No es por eso, es por ser virtual y no necesariamente estan en disco, estan cuando es necesario por falta de espacio en RAM. Si, el calculo se hace en base a el contexto del proceso (hay un registro que guarda la base de las tablas). Lee de nuevo todo el hilo y la documentacion que te dimos ...
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Dudas sobre direccionamiento
« Respuesta #9 en: 19 Mayo 2014, 23:49 pm »

Ta, genial.. cuando empiezo a leer mas SI's que NO's estoy encaminado jaja

Citar
x64  ::) Windows de 32 bits no puede direccionar mas que 4 GB (a menos que use PAE).
Entonces a eso se debe lo de la memoria en 32bits y en 64bits..  ;D

Citar
Si, el calculo se hace en base a el contexto del proceso (hay un registro que guarda la base de las tablas).
El GDT o el LDT,, uno de ellos.. sigo leyendo para aclararme mejor..

Gracias Sabios! Saludos!



Ta.. creo que lo entendí.. en principio yo quería unir la paginacion con la segmentación.. pero son dos cosas diferentes.. son 2 paradigmas distintos.. (aunque creo se pueden usar juntos).

Saludos!
« Última modificación: 20 Mayo 2014, 00:59 am por Vaagish » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Tengo varias dudas sobre DVD a formato FLV, y otras cosas sobre FLV
Multimedia
SaintGermain 0 2,250 Último mensaje 30 Mayo 2005, 21:47 pm
por SaintGermain
[DUDAS] Todas las dudas sobre RadASD + MASM aqui « 1 2 3 »
ASM
AleX Inc. 23 21,032 Último mensaje 5 Julio 2010, 11:58 am
por Eternal Idol
Dudas sobre la vpn sobre Windows Server 2003
Redes
Riudo 5 5,621 Último mensaje 24 Mayo 2011, 05:36 am
por Riudo
recomendacion sobre compra de domino y dudas sobre filtro de una pagina web
Desarrollo Web
josco 3 5,562 Último mensaje 31 Agosto 2021, 00:23 am
por AFKXDLOLNASHE
Duda sobre direccionamiento de la memoria
Dudas Generales
Oppenheimer 2 2,257 Último mensaje 23 Septiembre 2013, 20:07 pm
por Oppenheimer
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines