Sunteți pe pagina 1din 5

Emulador

DOSBox, emulador que permite ejecutar una shell similar al sistema DOS.

En informtica, un emulador es un software que permite ejecutar programas o videojuegos en una plataforma (sea una arquitectura dehardware o un sistema operativo) diferente de aquella para la cual fueron escritos originalmente. A diferencia de un simulador, que slo trata de reproducir el comportamiento del programa, un emulador trata de modelar de forma precisa el dispositivo de manera que este funcione como si estuviese siendo usado en el aparato original. Un uso popular de los emuladores es el de imitar la experiencia de los videojuegos de mquinas recreativas o videoconsolas encomputadoras personales, o el poder ser jugados en otras videoconsolas. La emulacin de videojuegos de sistemas antiguos (abandonware) en las modernas computadoras personales y videoconsolas de hoy da resulta generalmente ms cmoda y prctico que en los dispositivos originales. Sin embargo, puede ser requerido a los creadores de emuladores una licencia de software para escribir programas originales que dupliquen la funcionabilidad de la ROM y BIOS del hardware original, lo que comnmente se conoce como high-level emulation o emulacin de alto nivel. En sentido terico, la tesis de Church-Turing implica que cualquier ambiente funcional puede ser emulado dentro de cualquier otro. En la prctica, esto puede resultar realmente difcil, particularmente cuando el comportamiento exacto del sistema emulado no est documentado y debe ser deducido mediante ingeniera inversa. Tampoco se habla en la tesis sobre las diferencias en sincronizacin; si el emulador no acta tan rpidamente como elhardware original, el software de emulacin va a ir ms lento que si fuese el hardware original.
ndice [ocultar]

1 Estructura

o o

1.1 Simulador de CPU 1.2 Dispositivos de entrada y salida

2 Sistema de ROM 3 Virtualizacin 4 Emulador de videoconsola 5 Vase tambin 6 Enlaces externos

Estructura[editar editar fuente]


La mayora de los emuladores solo emulan una determinada configuracin arquitectura de hardware - si el sistema de explotacin ( o sistema operativo) tambin se requiere para emular cierto programa entonces ha de ser emulado tambin. Tanto el sistema de explotacin como el programa deben ser interpretados por el emulador, como si estuviese ejecutndose en el equipo original. Aparte de la interpretacin del lenguaje de la mquina emulada, es preciso emular el resto del equipo, como los dispositivos de entrada y salida, de forma virtual: si escribir en una regin especfica de la memoria debe influir en el contenido en pantalla, por ejemplo, esto tambin debe ser emulado. En vez de una emulacin completa del equipo, una compatibilidad superficial puede ser suficiente. Esto traduce las llamadas del sistema emulado a llamadas del sistema anfitrin. Los desarrolladores de programas para mquinas con sistemas computarizados y consolas de videojuego comnmente utilizan emuladores especialmente exactos llamadossimuladores antes de ejecutarlos en el equipo real. Esto permite que el programa pueda ser producido y probado antes de que la versin final del equipo para el cual se est desarrollando sea producida en grandes cantidades, de esta forma puede ser probado sin tener que copiar el programa en el equipo, de modo que puedan ser eliminados errores en un nivel bajo sin tener los efectos colaterales de un depurador. Tpicamente, un emulador se divide en mdulos que corresponden de forma precisa a los subsistemas del equipo emulado. Lo ms comn, es que un emulador este compuesto por los siguientes mdulos:


Un emulador de la unidad central de procesamiento. Un mdulo para el subsistema de memoria. Varios emuladores para los dispositivos de entrada y salida.

Lo ms comn es que los buses no sean emulados, por razones de simplicidad y rendimiento, y para que los perifricos virtuales se comuniquen directamente con la UCP y los subsistemas de memoria.

Simulador de CPU[editar editar fuente]

El simulador de la unidad central de procesamiento (CPU) es a menudo la parte ms compleja de un emulador. Muchos emuladores son escritos utilizando simuladores de CPU "preempaquetados", para as poder realizar una emulacin fiel y eficiente de una mquina especfica. El simulador de CPU ms simple sera un intrprete informtico, que sigue el flujo de ejecucin del cdigo de programacin emulado y, por cada instruccin de cdigo de la mquina emulada, ejecuta en el procesador en que se carga, instrucciones semnticamente equivalentes a las originales. Esto es posible asignando una variable a cada registro y flag de la CPU emulada. La lgica de la CPU simulada puede ser ms o menos traducida directamente a algoritmos desoftware, creando una reimplementacin del software que bsicamente refleja la implementacin original del hardware. El ejemplo siguiente ilustra el modo en que la simulacin de CPU por un intrprete. En este caso, las interrupciones se revisan despus de la ejecucin de cada instruccin, aunque este comportamiento no es usual en los emuladores en la realidad, por razones de rendimiento. void Execute(void) { if(Interrupt!=INT_NONE) { SuperUser=TRUE; WriteMemory(++StackPointer, ProgramCounter); ProgramCounter=InterruptPointer; } switch(ReadMemory(ProgramCounter++)) { // Handling of every valid instruction default: Interrupt=INT_ILLEGAL; } } Los intrpretes son muy populares en el caso de los simuladores de CPU, ya que son ms sencillos de implementar que otras soluciones alternativas de mejor rendimiento, y su velocidad es ms que adecuada para emular computadoras de hace ms de una dcada en mquinas modernas. Aun as, la penalizacin de velocidad inherente en la interpretacin puede ser un problema al emular computadores cuya velocidad de procesador est en el mismo orden de magnitudque la mquina husped. Hasta no hace tantos aos, la emulacin en tales situaciones era considerada impracticable. Lo que permite el rompimiento de esta restriccin son las tcnicas avanzadas de recompilacin dinmica. Una translacin simple a priori del cdigo del programa emulado al cdigo que corre en la arquitectura original es usualmente imposible por varias razones:

el cdigo puede ser auto modificable

no existe una forma que distinga de forma confiable los segmentos de informacin (que no deben ser traducidos) de los segmentos de texto (segmentos de cdigo)

no existe forma de comunicarse con el sistema operativo emulado para que el emulador reconozca los nuevos cdigos cargados (por ejemplo del disco)

Varias formas de recompilacin dinmica, incluyendo la popular tcnica de compilacin en tiempo de ejecucin (compilacin JIT), trata de bordear estos temas esperando hasta que el proceso de control de flujo se mueva hasta donde esta la parte donde est localizado el cdigo sin traducir, y es solo entonces {"en tiempo de ejecucin") cuando los bloques traducidos del cdigo al cdigo anfitrin pueden ser ejecutados. El cdigo traducido se mantiene en el cdigo cach, y el cdigo original no se pierde ni es afectado; de esta forma, incluso los segmentos de data pueden ser trasladados por el recompilador, resultando solo en un gasto de tiempo de traslado.

Dispositivos de entrada y salida[editar editar fuente]


La mayora de los emuladores, como dicho anteriormente, no emulan el sistema principal bus; cada dispositivo de entrada y salida es tratado a menudo como un caso especial, y no existe una interfaz constante para los perifricos virtuales. Esto puede resultar en una ventaja en el funcionamiento, proveyendo que cada mdulo de entrada y salida pueda ser adaptado a las caractersticas del dispositivo emulado; diseos basados en un estndar, entradas y salidas unificadas por medio de API pueden sin embargo proveer modelos ms simples, y adems tienen la ventaja adicional de permitir de forma "automtica" la utilizacin de servicios plugins para proveer dispositivos virtuales de terceros en el emulador. Las entradas y salidas unificadas por medio de API no necesariamente reflejan la estructura del bus del hardware real: el diseo del bus est limitado por varios parmetros elctricos y la necesidad del manejo de programacin paralela que la mayora de las veces puede ser ignorada en la implementacin del software. An los emuladores que tratan cada dispositivo como un caso especial poseen una infraestructura bsica en comn para ello:

manejando interruptores, por medio de procedimientos que fijen banderas legibles por el simulador del CPU siempre que un interruptor sea levantado, permitiendo al CPU virtual "convertir los interruptores (virtuales)".

escribiendo y leyendo de la memoria fsica, por medio de dos procedimientos similares mientras este lidia con la memoria lgica (contrario a este ltimo, el anterior puede comnmente ser echado a un lado, y en su lugar se emplean las referencias directas al arreglo de memoria)

Sistema de ROM[editar editar fuente]

NeoRAGEx, emulador a base deimgenes ROM.

Los emuladores arrancan imgenes ROM, o sea el contenido de los cartuchos, disquetes o cintas que se usaban con los sistemas antiguos. Fsicamente en las PC las ROM son archivos binarios que se pueden cargar en la memoria. Es decir, el emulador es un programa que hace las funciones de una consola, por ejemplo la Game Boy Advance o una PDA, y la ROM es un archivo que hace de cartucho, CD-ROM, o cinta, por ejemplo Mario Bros..

Virtualizacin[editar editar fuente]


Tambin hay una vertiente en la emulacin que puede ser realizada por virtualizacin, consistente en crear una capa de abstraccin, pero ejecutando instrucciones en una mquina del mismo tipo, y da como resultados obtener una computadora dentro de otra. Ejemplos de esto son:

VMware Microsoft Virtual PC Bochs VirtualBox

Emulador de videoconsola[editar editar fuente]


Artculo principal: Emulador de videoconsola.

Los emuladores de videoconsolas son un tipo de emuladores diseados para emular una o varias videoconsolas y as poder jugar un videojuego diseado para ser jugado en sta(s). Los emuladores mltiples suelen emular consolas con caractersticas similares (por ejemplo MEKA emula todas las consolas de Sega de 8 bits y la Colecovision)

S-ar putea să vă placă și