[C con Clase] los temibles punteros

Davidson, Steven srd4121 en njit.edu
Mie Mar 19 01:37:24 CET 2014


Hola Yolmer,

2014-03-17 14:21 GMT-04:00 Yolmer Rosales <yolmer.rosales en gmail.com>:

> Gracias Steven
>
> pueden también recomendar alguna bibliografía  sobre la memoria virtual en
> windows o en general
>
>
Puedes consultar el artículo en nuestra página sobre la memoria virtual en
MS-Windows: http://articulos.conclase.net/?tema=navarro&art=virtual&pag=000

En general, cualquier libro de texto sobre sistemas operativos dedicará al
menos un capítulo a la memoria virtual.

desde la época del 386 se comenzó hablar de modo virtual o modo seguro es
> entonces eso precisamente lo mismo de aquellos tiempos remotos?
>
>
Correcto. Existía el modo protegido precisamente para ofrecer una ejecución
de programas diseñados para procesadores anteriores, ya que no
desconocerían el uso de memoria virtual. De esta manera, estos programas
podrían usar direcciones reales (físicas) en un entorno protegido sin tener
problemas con la memoria virtual.

que pasaría si intento correr eso mismo en linux tengo más, menos o igual
> acceso?
>
>
Hoy día, usamos memoria uniforme que es un modelo plano de tratar la
memoria. Las versiones actuales de Linux para la arquitectura moderna de
los procesadores de Intel, por ejemplo, conoce perfectamente el uso de
memoria virtual. Linux tendrá sus propias funciones especiales para
gestionar memoria virtual.

Cuando hablas de comunicarse con el sistema operativo para ver direcciones
> específicas de memoria, te refieres a alguna biblioteca en particular, o
> cómo se podría hacer?
>
>
Hablaba en general. Cada S.O. suele usar sus propias funciones, así que es
cuestión de comunicarse correctamente con el S.O. a través de su API.

disculpen la insistencia con el plugin, pero en ahora que lo dices, si el
> epsxe EMULA la plataforma psone entonces los datos definitivamente no se
> encuentran físicamente en la dirección que indica...
>
> me atrevo entonces a hacer unas conjeturas, el plugin se comunica con el
> emulador este con el SO y este otro a su vez con el hardware, y de esa
> manera se garantizan unas cuantas cosas ... pero entonces me surge la otra
> pregunta, que es similar a una de las del primer mensaje.
>
> Este plugin. cómo lee de la memoria del programa? Por una parte ya revisé
> es una dll entonces... conjeturo nuevamente aprovecharon la comunicación
> que queda abierta con una librería dinámica. Pero no me queda del todo
> claro porque...
>
> Según yo lo veo es imposible que los datos se carguen en las mismas
> direcciones en cada ejecución aún siendo virtuales, no hay nada que
> garantice [creo yo] que los va a encontrar libre. Entonces de que se puede
> valer un programador para hurgar  en la memoria de otro programa. Acaso de
> los socket? no se disculpen si dije barbaridades
>
>
Veamos. Tienes que tener algunas ideas claras sobre todo esto:

- El emulador no es más que un programa, que puede comunicarse directamente
con el S.O. o no.
- El emulador no va a cargar un juego de la PS directamente al procesador.
La función de un emulador es "emular"; es decir, imita o recrea un
comportamiento.
- Las instrucciones que forman un programa (juego) diseñadas para la PS no
serán idénticas a las instrucciones aceptadas por un procesador de Intel.
Playstation usaba un procesador MIPS que es de una arquitectura MUY
diferente a la de Intel. Algunas características son iguales, pero las
implementaciones son muy diferentes.
- El emulador conoce perfectamente las instrucciones del procesador de la
PS y su formato; y obviamente conoce las diferencias entre el diseño de la
PS y el diseño de los procesadores de Intel.


El emulador en realidad es un intérprete:

1.  Lee los datos en el fichero del juego, que representan instrucciones y
valores,
2.  Interpreta las instrucciones, y
3.  Ejecuta las tareas comunicándose con el S.O.; o bien a través de su API
oficial, o bien directamente en ensamblador

Lo que el emulador no debería hacer es hacer una traducción (o
interpretación) literal de las instrucciones de la PS a las de Intel,
porque es posible que no sean compatibles; ni mucho menos con el tema de la
memoria. Si ambas arquitecturas coinciden en diseño, entonces obviamente es
más fácil traducir una instrucción a otra, y por tanto hay menos trámites.

Tal vez viendo el fuente me pierda más porque no soy experto pero ni
> siquiera es un proyecto abierto
>
> Disculpen lo largo.
>
>
No te preocupes por el tamaño del mensaje, con tal de que todo lo que digas
sea útil para expresar tus dudas.


Espero que lo anterior te aclare las dudas.

Steven
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20140318/b92b4420/attachment.html>


Más información sobre la lista de distribución Cconclase