Documente Academic
Documente Profesional
Documente Cultură
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
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.
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:
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.
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)
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..
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)