Anda di halaman 1dari 7

EMULADOR

En informática, un emulador es un software que permite ejecutar


programas de computadora en una plataforma (arquitectura hardware o
sistema operativo) diferente de la cual fueron escritos originalmente. A
diferencia de un simulador, que sólo trata de reproducir el comportamiento
del programa, un emulador trata de modelar de forma precisa el dispositivo
que se está emulando.
Un uso popular de los emuladores es el de imitar la experiencia de los
videojuegos de máquinas recreativas o videoconsolas en sistemas
operativos como GNU/Linux, Mac OS X o Microsoft Windows, o el poder ser
jugados en otras videoconsolas. La emulación de videojuegos de sistemas
antiguos (abandonware) en las modernas computadoras personales y
videoconsolas de hoy día resulta generalmente más cómodo y práctico 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 comúnmente se conoce como high-level emulation o
emulación de alto nivel.
En sentido teórico, la tesis de Church-Turing implica que cualquier ambiente
funcional puede ser emulado dentro de cualquier otro. En la práctica, esto
puede resultar realmente difícil, particularmente cuando el comportamiento
exacto del sistema emulado no está documentado y debe ser deducido
mediante ingeniería inversa. Tampoco se habla en la tesis sobre las
diferencias en sincronización; si el emulador no actúa tan rápidamente como
el hardware original, el software de emulación va a ir más lento que si fuese
el hardware original.

ESTRUCTURA
La mayoría de los emuladores solo emulan una determinada configuración
arquitectura de hardware - si el sistema de explotación ( o sistema
operativo) también se requiere para emular cierto programa entonces ha de
ser emulado también. Tanto el sistema de explotación como el programa
deben ser interpretados por el emulador, como si estuviese ejecutándose en
el equipo original. Aparte de la interpretación del lenguaje de la máquina
emulada, es preciso emular el resto del equipo, como los dispositivos de
entrada y salida, de forma virtual: si escribir en una región específica de la
memoria debe influir en el contenido en pantalla, por ejemplo, esto también
debe ser emulado.
En vez de una emulación completa del equipo, una compatibilidad
superficial puede ser suficiente. Esto traduce las llamadas del sistema
emulado a llamadas del sistema anfitrión.
Los desarrolladores de programas para máquinas con sistemas
computarizados y consolas de videojuego comúnmente utilizan emuladores
especialmente exactos llamados simuladores antes de ejecutarlos en el
equipo real. Esto permite que el programa pueda ser producido y probado
antes de que la versión 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.
Típicamente, un emulador se divide en módulos que corresponden de forma
precisa a los subsistemas del equipo emulado. Lo más común, es que un
emulador este compuesto por los siguientes módulos:

 Un emulador de CPU o un simulador de UCP (ambos términos son en
la mayoría de los casos intercambiables).
 Un módulo para el subsistema de memoria.
 Varios emuladores para los dispositivos de entrada y salida.

Lo más común es que los BUSes no sean emulados, por razones de


simplicidad y rendimiento, y para que los periférico virtuales se comuniquen
directamente con la UCP y los subsistemas de memoria.
Subsistema de memoria [editar]
Es posible que la emulación de los subsistemas de memoria se reduzca a
una simple tabla de elementos cada uno clasificado como una palabra
emulada; sin embargo, este modelo falla rápidamente tan pronto como
cualquier parte en memoria lógica de la computadora no coincida con la
memoria física.
Éste es claramente el caso en que el equipo emulado permita un manejo
avanzado de la memoria (en caso que, la Unidad de administración de
memoria lógica pueda ser encajada en la memoria del emulador, haciendo
un módulo de sí mismo, o en ciertos casos integrándola en el simulador de
la UCP).
Incluso si la computadora emulada no contiene una MMU, es posible que
existan otros factores que permitan la equivalencia entre memoria lógica y
física; algunas (si no todas) arquitecturas ofrecen una correspondencia de
memoria de entrada y salida; incluso aquellos que no son del todo
invariables contienen un bloque de memoria lógica correspondiente a la
Memoria de sólo lectura, lo cual significa que el modelo de tabla de memoria
debe ser descartado si la memoria ROM va a ser emulada.
Como resultado, la mayoría de los emuladores realiza al menos dos
procedimientos para escribir y leer de la memoria lógica, y este
procedimiento debe mapear cada acceso a su localización correcta del
objeto correcto.
Simulador de CPU [editar]
El Simulador de CPU (Unidad Central de Proceso) es a menudo la parte
más compleja de un emulador. Muchos emuladores son escritos utilizando
simuladores de CPU "pre-empaquetados", para así poder realizar una
emulación fiel y eficiente de una máquina específica.
El simulador de CPU más simple sería un Intérprete informático, que sigue
el flujo de ejecución del código de programación emulado y, por cada
instrucción de código de la máquina emulada, ejecuta en el procesador en
que se carga, instrucciones semánticamente equivalentes a las originales.
Esto es posible asignando una variable a cada registro y flag de la CPU
simulada. La lógica de la CPU simulada puede ser más o menos traducida
directamente a algoritmos de software, creando una re-implementación del
software que básicamente refleja la implementación original del hardware.
El ejemplo siguiente ilustra el modo en que la simulación de CPU por un
intérprete. En este caso, las interrupciones se revisan después de la
ejecución de cada instrucción, aunque este comportamiento no es usual en
los emuladores en la realidad, por razones de rendimiento.
Los intérpretes son muy populares en el caso de los simuladores de CPU,
ya que son más sencillos de implementar que otras soluciones alternativas
de mejor rendimiento, y su velocidad es más que adecuada para emular
computadares de hace más de una [década|década] en máquinas
modernas.
Aun así, la penalización de velocidad inherente en la interpretación puede
ser un problema al emular computadores cuya velocidad de procesador está
en el mismo [orden de magnitud] que la máquina huésped. Hasta no hace
tantos años, la emulación en tales situaciones era considerada
impracticable.
Lo que permite el rompimiento de esta restricción son las técnicas
avanzadas de recompilación dinámica. Una translación simple a priori del
código del programa emulado al código que corre en la arquitectura original
es usualmente imposible por varias razones:

 el código puede ser auto modificable


 no existe una forma que distinga de forma confiable los segmentos de
información (que no deben ser traducidos) de los segmentos de texto
(segmentos de código)
 no existe forma de comunicarse con el sistema operativo emulado para
que el emulador reconozca los nuevos códigos cargados (por ejemplo
del disco)

Varias formas de recompilación dinámica, incluyendo la popular técnica de


compilación en tiempo de ejecución (compilación 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 código sin traducir, y es
solo entonces {"en tiempo de ejecución") cuando los bloques traducidos del
código al código anfitrión pueden ser ejecutados.
El código traducido se mantiene en el código cache, y el código 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]
La mayoría 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
periféricos virtuales.
Esto puede resultar en una ventaja en el funcionamiento, proveyendo que
cada módulo de entrada y salida pueda ser adaptado a las características
del dispositivo emulado; diseños basados en un estándar, entradas y salidas
unificadas por medio de API pueden sin embargo proveer modelos más
simples, y además tienen la ventaja adicional de permitir de forma
"automática" la utilización 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 diseño del bus está
limitado por varios parámetros eléctricos y la necesidad del manejo de
programación paralela que la mayoría de las veces puede ser ignorada en
la implementación del software.
Aún los emuladores que tratan cada dispositivo como un caso especial
poseen una infraestructura básica en común 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 física, por medio de dos
procedimientos similares mientras este lidia con la memoria lógica
(contrario a este último, el anterior puede comúnmente ser echado a un
lado, y en su lugar se emplean las referencias directas al arreglo de
memoria)

SIMULADOR

Un simulador es un aparato que permite la simulación de un sistema,


reproduciendo su comportamiento. Los simuladores reproducen
sensaciones que en realidad no están sucediendo.
Un simulador pretende reproducir tanto las sensaciones físicas (velocidad,
aceleración, percepción del entorno) como el comportamiento de los
equipos de la máquina que se pretende simular. Para simular las
sensaciones físicas se puede recurrir a complejos mecanismos hidráulicos
comandados por potentes ordenadores que mediante modelos matemáticos
consiguen reproducir sensaciones de velocidad y aceleración. Para
reproducir el entorno exterior se emplean proyecciones de bases de datos
de terreno. A este entorno se le conoce como "Entorno Sintético".
Para simular el comportamiento de los equipos de la máquina simulada se
puede recurir varias técnicas. Se puede elaborar un modelo de cada equipo,
se puede utilizar el equipo real o bien se puede utilizar el mismo software
que corre en el equipo real pero haciéndolo correr en un ordenador más
convencional (y por lo tanto más barato). A esta última opción se la conoce
como "Software Rehosteado".
Los simuladores más complejos son certificados por las autoridades
competentes. En el caso de los simuladores de vuelo el certificado lo realiza
la organización de aviación civil de cada país, que proporciona a cada
simulador un código indicando su grado de realismo. En los simuladores de
vuelo de mayor realismo las horas de entrenamiento contabilizan como
horas de vuelo reales y capacitan al piloto para realizar su labor.
En España las principales empresas que realizan simuladores de vuelo son
Indra y EADS. Por otro lado, la empresa española DiD (actualmente
SimuMAK), es la responsable del desarrollo de la mayor parte de los
simuladores de maquinaria existentes en el mercado internacional, siendo
MaqSIM4 (simulador completo para maquinaria de movimiento de tierras),
su producto más destacado.

TIPOS DE SIMULADORES

 Simulador de carreras: es el tipo de simulador más popular; se puede


conducir un automóvil, motocicleta, camión, etc. Ejemplos: rFactor, GTR,
GT Legends, toca racer.
 Simulador de vuelo o de aviones: permite dominar el mundo de la
aviación y pilotar aviones, helicópteros... Ejemplo: Microsoft Flight
Simulator
 Simulador de trenes: permite controlar un tren. Ejemplo: Microsoft Train
Simulator, Trainz , BVE Trainsim .
 Simulador de vida o de dinámica familiar: permite controlar una persona
y su vida. Ejemplo: Los Sims.
 Simulador político: permite rolear como político. Ejemplo: Las Cortes de
Extremapol.

 Simulador clínico médico: permite realizar diagnósticos clínicos sobre


pacientes virtuales. El objetivo es practicar con pacientes virtuales casos
clínicos, bien para practicar casos muy complejos, preparando al médico
para cuando se encuentre con una situación real o bien para poder
observar como un colectivo se enfrenta a un caso clínico, para poder
sacar conclusiones de si se está actuando correctamente, siguiendo el
protocolo de actuación establecido.

Anda mungkin juga menyukai