Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: x64core en 27 Noviembre 2011, 07:08 am



Título: [DUDA] Acerca de Memoria Virtual Y Memoria Fisica Entre otros...
Publicado por: x64core en 27 Noviembre 2011, 07:08 am
Hola!:D
bueno estoy estudiando algo a profundidad acerca de la arquitectura de la memoria en WINDOWS
e leido acerca de la memoria virtual y la memoria fisica, paginaciones, tambien archivos de mapeo...
bueno me cuesta un poco aprenderme esto al 100% ya que los libros que estoy leyendo estan
en ingles  :-\
bueno pero tengo mis conceptos y quisiera saber si son correctos y una que otra duda :P
ya que no me gusta nada quedarme con este tipo de conceptos que nose al final si son correctos o no :P

bueno primero quisiera saber si estoy en lo correcto entre la memoria fisica y la memoria virtual...
la memoria virtual es bastante pero solo es utilizada la misma cantidad de la que hay de memoria fisica...?

respecto al mapeo de archivos e leido que se crean para respaldar a la memoria virtual... no entiendo muy
bien eso...

solamente gracias ;D


Título: Re: [DUDA] Acerca de Memoria Virtual Y Memoria Fisica Entre otros...
Publicado por: Eternal Idol en 27 Noviembre 2011, 11:57 am
No, la memoria virtual hace uso de el archivo de paginacion y expone a cada uno de los procesos (32 bits, por defecto) un espacio de direcciones de 2GB (que no tienen que usar). Supongamos que todos los procesos (5) hacen uso completo de la misma entonces si tenes 512MB de ram (es la prehistoria, si) el S.O. tendra que hacer uso del archivo de paginacion (es decir escribir alguno de esos datos en el pagefile.sys). La memoria virtual siempre es mas grande que la real ...

Lo segundo es lo que te acabo de decir pero no es el mapeo de archivos sino el archivo de paginacion, mapear archivos es ponerlos en memoria virtual para acceder con un puntero en lugar de mediante una llamada a Read/Write.


Título: Re: [DUDA] Acerca de Memoria Virtual Y Memoria Fisica Entre otros...
Publicado por: x64core en 27 Noviembre 2011, 18:18 pm
entonces eso quiere decir que la memoria virtual son los archivos de paginacion?
ya que entiendo que la memoria virtual es una simulacion de memoria RAM
eso de un proceso y que ocupa u espcio de 2GB :| porque 2GB? si como dices por ejemplo una maquina
de 1 GB ni siquiera da abasto para un proceso :xD como es eso? xD

gracias EI :D


Título: Re: [DUDA] Acerca de Memoria Virtual Y Memoria Fisica Entre otros...
Publicado por: Eternal Idol en 27 Noviembre 2011, 18:23 pm
No, cuando no hay suficiente espacio disponible en la RAM se usa el disco (el archivo de paginacion) como soporte. Mejor leete esto:

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

4 GB es el espacio de direcciones total (lo maximo que podes direccionar con un puntero de 4 bytes), 2 GB para modo Usuario y 2 GB para el Kernel, no quiere decir ni mucho menos que toda esa memoria este en uso para cada proceso.


Título: Re: [DUDA] Acerca de Memoria Virtual Y Memoria Fisica Entre otros...
Publicado por: x64core en 27 Noviembre 2011, 18:35 pm
ya creo que lo tengo ! xD
entonces la memoria virtual es en parte la memoria fisica y en parte la memoria del disco duro y cuando "crea"
memoria RAM apartir del disco duro es cuando accede al archivo de paginacion! si? :P
ok y para lo de 4GB para un proceso eso quiere decir que el proceso esta en la memoria de el rango de direcciones de 4GB?


Título: Re: [DUDA] Acerca de Memoria Virtual Y Memoria Fisica Entre otros...
Publicado por: Eternal Idol en 27 Noviembre 2011, 18:40 pm
In computing, virtual memory is a memory management technique developed for multitasking kernels. This technique virtualizes a computer architecture's various forms of computer data storage (such as random-access memory and disk storage), allowing a program to be designed as though there is only one kind of memory, "virtual" memory, which behaves like directly addressable read/write memory (RAM).

Most modern operating systems that support virtual memory also run each process in its own dedicated address space, allowing a program to be designed as though it has sole access to the virtual memory.


Título: Re: [DUDA] Acerca de Memoria Virtual Y Memoria Fisica Entre otros...
Publicado por: Arkangel_0x7C5 en 28 Noviembre 2011, 10:51 am
La memoria virtual es una simulación de la memoria real. Se finge tener mas de o que se tiene. Normalmente cada proceso tiene un espacio de memoria virtual independiente. Para ese proceso es como si estuviera solo y tuviera toda la memoria para el solo.

Normalmente se le asigna un espacio tan grande como el espacio máximo direccional por la plataforma. Una dirección virtual no tiene necesariamente que apuntar a la misma dirección física o tener una dirección física asignada. El sistema para poder manejar toda esta memoria que supuestamente tiene, va guardando lo que en ese momento es menos usado en disco para poder poner en memoria lo que hace falta en ese momento.

Mas o menos esto es todo.

Saludos


Título: Re: [DUDA] Acerca de Memoria Virtual Y Memoria Fisica Entre otros...
Publicado por: .:UND3R:. en 28 Noviembre 2011, 14:22 pm
La Memoria Virtual en programas en modo protegido, el procesador puede ejecutar varios programas al mismo tiempo. A cada proceso le asigna un total de 4G de memoria DE 00000000 a FFFFFFFFh. A cada programa se le asigna una propia área reservada de memoria, los programas no pueden acceder de manera accidental al código y los datos de los demás memoria.

En modo direccionamiento real sólo puede direccionarse 1MB de memoria, del 00000 al FFFFFh

Memoria física:
es el espacio que utiliza un ejectuable dentro de un disco duro

Podríamos decir que poseemos un programa en

Para un buen entendimiento de las direcciones existentes en ambos conceptos es claro que conozcas algunos datos que están dentro de la cabecera PE

-VirtualAddress:(RVA del inicio de la sección)

Estos datos están Ubicados en la IMAGE_SECTION_HEADER (una sub-división de la cabecera Portable executable) El primer dato apunta a RVA que es RVA?
Relative Value Absolute Es una dirección que no posee ImageBase (esta por lo general es asignada a 400000h) en este caso es el inicio de la sección o segmento de un ejecutable.

A que va todo esto? este es valor que posee el inicio de un segmento X en la memoria virtual,que puede ser útil al momento de apuntar a algún dato

también contamos con el término RAW que es una dirección en el disco

y VA value absolute, este es una dirección de memoria virtual que tiene sumada su ImageBase

ImageBase-Base de la Imagen - inicio de la imagen en la memoria virtual.

en resumen tenemos lo siguientes tipos de datos que puedes tratar en los distintos tipos de memoria:
Direccionamiento(Address) en MEMORIA VIRTUAL
Utiliza address tipo RVA
address tipo VA

Direccionamiento(Address) en MEMORIA FÍSICA
RAW

Tal vez de no usar palabras tan altisonantes habría comentado para ayudar, en vista de lo leído prefiero callar. De todos modos creo que ya te resolvieron la duda...

Por parte de Unbr0ken veo tu pobre comentario, presumiendo tus conocimientos avanzados pero no veo ninguna solución al problema de RHL.


Título: Re: [DUDA] Acerca de Memoria Virtual Y Memoria Fisica Entre otros...
Publicado por: Eternal Idol en 28 Noviembre 2011, 14:55 pm
La Memoria Virtual en programas en modo protegido, el procesador puede ejecutar varios programas al mismo tiempo.

Mezclas varios conceptos aca:
http://en.wikipedia.org/wiki/Virtual_memory
http://en.wikipedia.org/wiki/Protected_mode
http://en.wikipedia.org/wiki/Computer_multitasking

Memoria física:
es el espacio que utiliza un ejectuable dentro de un disco duro

En este tema de memoria virtual la memoria fisica es la RAM (disco duro = paging (http://en.wikipedia.org/wiki/Paging)), ademas ambas (tanto la virtual como la fisica) se usan tambien para datos como esto que estoy escribiendo aca ahora mismo, MP3s, archivos de configuracion o lo que fuera. Un S.O. con otro formato de ejecutable y sin disco duro es totalmente factible por cierto ...

Lo demas no tiene nada que ver y parte del error señalado arriba al mezclar el formato PE ...


Título: Re: [DUDA] Acerca de Memoria Virtual Y Memoria Fisica Entre otros...
Publicado por: x64core en 28 Noviembre 2011, 17:20 pm
Gracias Eternal Idol, Arkangel_0x7C5, .:UND3R:. :)
me ah quedado claro como funciona todo ;D