En informática , un emulador es hardware o software que permite que un sistema informático (llamado host ) se comporte como otro sistema informático (llamado invitado ). Por lo general, un emulador permite que el sistema host ejecute software o utilice dispositivos periféricos diseñados para el sistema invitado. La emulación se refiere a la capacidad de un programa de computadora en un dispositivo electrónico para emular (o imitar) otro programa o dispositivo.
Muchas impresoras , por ejemplo, están diseñadas para emular impresoras HP LaserJet porque gran parte del software está escrito para impresoras HP. Si una impresora que no es HP emula una impresora HP, cualquier software escrito para una impresora HP real también se ejecutará en la emulación de impresora que no es HP y producirá una impresión equivalente. Desde al menos la década de 1990, muchos entusiastas de los videojuegos y aficionados han utilizado emuladores para jugar a juegos de arcade clásicos (y / u olvidados) de la década de 1980 utilizando el código de máquina y los datos originales de los juegos de la década de 1980, que son interpretados por un sistema de la era actual y para emular viejas consolas de videojuegos .
Un emulador de hardware es un emulador que toma la forma de un dispositivo de hardware. Los ejemplos incluyen la tarjeta compatible con DOS instalada en algunas computadoras Macintosh de la década de 1990 , como Centris 610 o Performa 630 , que les permitía ejecutar programas de software de computadora personal (PC) y emuladores de hardware basados en FPGA . La tesis de Church-Turing implica que (teóricamente) cualquier entorno operativo puede emularse dentro de cualquier otro entorno (suponiendo que se ignoren las limitaciones de memoria). Sin embargo, en la práctica, puede resultar bastante difícil, especialmente cuando el comportamiento exacto del sistema que se va a emular no está documentado y debe deducirse (a veces tediosamente) mediante ingeniería inversa . Tampoco dice nada sobre las limitaciones de tiempo; Si el emulador no funciona tan rápido como lo hizo con el hardware original, el software dentro de la emulación puede ejecutarse mucho más lento (posiblemente desencadenando interrupciones del temporizador que alteren el comportamiento).
"¿Puede un Commodore 64 emular MS-DOS ?" Sí, es posible que un [Commodore] 64 emule una PC IBM [que usa MS-DOS], en el mismo sentido en que es posible rescatar al lago Michigan con una cucharadita .
- ¡ Carta a la Computación! y respuesta editorial, abril de 1988 [1]
En preservación
La emulación es una estrategia en la búsqueda de la preservación digital y la lucha contra la obsolescencia . La emulación se centra en recrear un entorno informático original, que puede llevar mucho tiempo y ser difícil de lograr, pero valioso debido a su capacidad para mantener una conexión más estrecha con la autenticidad del objeto digital, el sistema operativo o incluso la plataforma de juegos. [2] La emulación aborda el entorno de hardware y software original del objeto digital y lo recrea en una máquina actual. [3] El emulador permite al usuario tener acceso a cualquier tipo de aplicación o sistema operativo en una plataforma actual , mientras que el software se ejecuta como lo hacía en su entorno original. [4] Jeffery Rothenberg, uno de los primeros defensores de la emulación como afirma una estrategia de preservación digital , "el enfoque ideal proporcionaría una única solución extensible a largo plazo que pueda diseñarse de una vez por todas y aplicarse de manera uniforme, automática y organizada en sincronía". (por ejemplo, en cada ciclo de actualización) a todo tipo de documentos y soportes ". [5] Afirma además que esto no solo debería aplicarse a los sistemas obsoletos, sino que también debería ser móvil hacia los futuros sistemas desconocidos. [6] Hablando en términos prácticos, cuando una determinada aplicación se lanza en una nueva versión, en lugar de abordar problemas de compatibilidad y migración para cada objeto digital creado en la versión anterior de esa aplicación , se podría crear un emulador para la aplicación , permitiendo el acceso a todos. de dichos objetos digitales.
Beneficios
- Potencialmente mejor calidad de gráficos que el hardware original.
- Potencialmente características adicionales que el hardware original no tenía.
- Los emuladores mantienen el aspecto, la sensación y el comportamiento originales del objeto digital, que es tan importante como los datos digitales en sí. [7]
- A pesar del costo original de desarrollar un emulador, puede llegar a ser la solución más rentable con el tiempo. [8]
- Reduce las horas de trabajo , porque en lugar de continuar una tarea continua de migración de datos continua para cada objeto digital, una vez que la biblioteca de los sistemas operativos pasados y presentes y el software de aplicación se establece en un emulador, estas mismas tecnologías se utilizan para todos los documentos que utilizan esas plataformas . [4]
- Muchos emuladores ya se han desarrollado y lanzado bajo la Licencia Pública General GNU a través del entorno de código abierto , lo que permite una colaboración a gran escala. [9]
- Los emuladores permiten que el software exclusivo de un sistema se utilice en otro. Por ejemplo, una PlayStation 2 exclusiva de videojuegos podría ser reproducido en un PC usando un emulador. Esto es especialmente útil cuando el sistema original es difícil de obtener y el adaptador analógico-digital no se puede obtener o no existe.
Obstáculos
- La legalidad que rodea a los derechos de propiedad intelectual es un problema continuo. Muchos equipos de desarrollo, empresas y proveedores de tecnología a veces implementaron características no estándar durante el desarrollo del programa para establecer su nicho en el mercado, al tiempo que aplicaban actualizaciones continuas para seguir siendo competitivos. Si bien esto puede haber avanzado la industria de la tecnología y aumentado la participación de mercado de los proveedores , ha dejado a los usuarios perdidos en una pesadilla de preservación con poca documentación de respaldo debido a la naturaleza patentada del hardware y el software. [10]
- Las leyes de derechos de autor aún no están en vigor para abordar el almacenamiento de la documentación y las especificaciones de software y hardware patentados en un módulo emulador. [11]
- Los emuladores se utilizan a menudo como una herramienta de infracción de derechos de autor , ya que permiten a los usuarios jugar videojuegos sin tener que comprar la consola y rara vez intentan evitar el uso de copias ilegales. Esto conduce a una serie de incertidumbres legales con respecto a la emulación y conduce a que el software se programe para negarse a funcionar si puede decir que el host es un emulador; algunos videojuegos en particular continuarán funcionando, pero no permitirán que el jugador progrese más allá de una etapa tardía del juego, lo que a menudo parece ser defectuoso o simplemente extremadamente difícil. [12] [13] Estas protecciones dificultan el diseño de emuladores, ya que deben ser lo suficientemente precisos para evitar activar las protecciones, cuyos efectos pueden no ser obvios.
- Los emuladores requieren un mejor hardware que el del sistema original.
En el arte de los nuevos medios
Debido a su uso principal de formatos digitales, el arte de los nuevos medios se basa en gran medida en la emulación como estrategia de preservación. Artistas como Cory Arcangel se especializan en resucitar tecnologías obsoletas en sus obras de arte y reconocen la importancia de un proceso descentralizado y desinstitucionalizado para la preservación de la cultura digital. En muchos casos, el objetivo de la emulación en el arte de los nuevos medios es preservar un medio digital para que pueda guardarse indefinidamente y reproducirse sin errores, de modo que no se dependa del hardware que envejece y se vuelve obsoleto. La paradoja es que la emulación y el emulador deben estar hechos para funcionar en computadoras futuras. [14]
En el diseño de sistemas futuros
Las técnicas de emulación se utilizan comúnmente durante el diseño y desarrollo de nuevos sistemas. Facilita el proceso de desarrollo al proporcionar la capacidad de detectar, recrear y reparar fallas en el diseño incluso antes de que el sistema esté realmente construido. [15] Es particularmente útil en el diseño de sistemas de múltiples núcleos , donde los errores de concurrencia pueden ser muy difíciles de detectar y corregir sin el entorno controlado proporcionado por el hardware virtual. [16] Esto también permite que el desarrollo del software se lleve a cabo antes de que el hardware esté listo, [17] ayudando así a validar las decisiones de diseño y dar un poco más de control.
Tipos
La mayoría de los emuladores simplemente emulan una arquitectura de hardware; si se requiere firmware o software del sistema operativo para el software deseado, también debe proporcionarse (y puede ser emulado). El emulador interpretará tanto el sistema operativo como el software , en lugar de ser ejecutados por hardware nativo. Aparte de este intérprete para el lenguaje de la máquina binaria emulada , también se debe proporcionar algún otro hardware (como dispositivos de entrada o salida) en forma virtual; por ejemplo, si escribir en una ubicación de memoria específica debe influir en lo que se muestra en la pantalla, entonces esto debería ser emulado. Si bien la emulación podría, si se lleva al extremo, descender al nivel atómico, basando su salida en una simulación del circuito real de una fuente de energía virtual, esta sería una solución muy inusual. Los emuladores generalmente se detienen en una simulación de las especificaciones de hardware documentadas y la lógica digital. La emulación suficiente de algunas plataformas de hardware requiere una precisión extrema, hasta el nivel de ciclos de reloj individuales, características no documentadas, elementos analógicos impredecibles y errores de implementación. Este es particularmente el caso de las computadoras domésticas clásicas como la Commodore 64 , cuyo software a menudo depende de trucos de programación de bajo nivel altamente sofisticados inventados por los programadores de juegos y la " demostración ".
En contraste, algunas otras plataformas han tenido muy poco uso de direccionamiento directo de hardware, como un emulador para PlayStation 4. [18] En estos casos, una simple capa de compatibilidad puede ser suficiente. Esto traduce las llamadas al sistema para el sistema externo en llamadas al sistema para el sistema host, por ejemplo, la capa de compatibilidad de Linux utilizada en * BSD para ejecutar software nativo de Linux de código cerrado en FreeBSD , NetBSD y OpenBSD . Por ejemplo, mientras que el procesador gráfico de Nintendo 64 era totalmente programable, la mayoría de los juegos usaban uno de los pocos programas prefabricados, que en su mayoría eran autónomos y se comunicaban con el juego a través de FIFO ; por lo tanto, muchos emuladores no emulan el procesador gráfico en absoluto, sino que simplemente interpretan los comandos recibidos de la CPU como lo haría el programa original. Los desarrolladores de software para sistemas integrados o consolas de videojuegos a menudo diseñan su software en emuladores especialmente precisos llamados simuladores antes de probarlo en el hardware real. Esto es para que el software pueda producirse y probarse antes de que exista el hardware final en grandes cantidades, de modo que pueda probarse sin tomarse el tiempo de copiar el programa para depurarlo a bajo nivel y sin introducir los efectos secundarios de un depurador . En muchos casos, el simulador lo produce la empresa que proporciona el hardware, lo que en teoría aumenta su precisión. Los emuladores de coprocesador matemático permiten que los programas compilados con instrucciones matemáticas se ejecuten en máquinas que no tienen el coprocesador instalado, pero el trabajo adicional realizado por la CPU puede ralentizar el sistema. Si un coprocesador matemático no está instalado o presente en la CPU, cuando la CPU ejecuta cualquier instrucción del coprocesador, hará una interrupción determinada (el coprocesador no está disponible), llamando a las rutinas del emulador matemático. Cuando la instrucción se emula con éxito, el programa continúa ejecutándose.
Estructura y organización
Normalmente, un emulador se divide en módulos que corresponden aproximadamente a los subsistemas de la computadora emulada. La mayoría de las veces, un emulador estará compuesto por los siguientes módulos:
- un emulador de CPU o simulador de CPU (los dos términos son en su mayoría intercambiables en este caso), a menos que el destino que se emula tenga la misma arquitectura de CPU que el host, en cuyo caso se puede usar una capa de máquina virtual en su lugar
- un módulo de subsistema de memoria
- varios emuladores de dispositivos de entrada / salida (E / S)
Los buses a menudo no se emulan, ya sea por razones de rendimiento o simplicidad, y los periféricos virtuales se comunican directamente con la CPU o el subsistema de memoria.
Subsistema de memoria
Es posible que la emulación del subsistema de memoria se reduzca a simplemente una matriz de elementos, cada uno de los cuales tiene el tamaño de una palabra emulada; sin embargo, este modelo falla muy rápidamente tan pronto como cualquier ubicación en la memoria lógica de la computadora no coincide con la memoria física . Este es claramente el caso siempre que el hardware emulado permite una gestión avanzada de la memoria (en cuyo caso, la lógica MMU puede integrarse en el emulador de memoria, convertirse en un módulo propio o, a veces, integrarse en el simulador de CPU). Sin embargo, incluso si la computadora emulada no cuenta con una MMU, generalmente hay otros factores que rompen la equivalencia entre la memoria lógica y física: muchas (si no la mayoría) de las arquitecturas ofrecen E / S mapeadas en memoria ; incluso aquellos que no suelen tener un bloque de memoria lógica mapeado en la ROM , lo que significa que el módulo de matriz de memoria debe descartarse si se va a emular la naturaleza de sólo lectura de la ROM. Funciones como la segmentación o el cambio de banco también pueden complicar la emulación de memoria. Como resultado, la mayoría de los emuladores implementan al menos dos procedimientos para escribir y leer desde la memoria lógica, y es el deber de estos procedimientos asignar cada acceso a la ubicación correcta del objeto correcto.
En un sistema de direccionamiento de límite base donde la memoria desde la dirección 0 hasta la dirección ROMSIZE-1 es memoria de solo lectura, mientras que el resto es RAM, algo similar a los siguientes procedimientos sería típico:
anular WriteMemory ( dirección de palabra , valor de palabra ) {dirección Real de palabra ; RealAddress = Dirección + BaseRegister ; if (( RealAddress < LimitRegister ) && ( RealAddress > ROMSIZE )) { Memory [ RealAddress ] = Value ; } else { RaiseInterrupt ( INT_SEGFAULT ); } }
palabra ReadMemory ( dirección de palabra ) { palabra RealAddress ; RealAddress = Dirección + BaseRegister ; if ( RealAddress < LimitRegister ) { return Memory [ RealAddress ]; } else { RaiseInterrupt ( INT_SEGFAULT ); return NULL ; } }
Simulador de CPU
El simulador de CPU suele ser la parte más complicada de un emulador. Muchos emuladores se escriben utilizando simuladores de CPU "preempaquetados", con el fin de concentrarse en una emulación buena y eficiente de una máquina específica. La forma más simple de un simulador de CPU es un intérprete , que es un programa de computadora que sigue el flujo de ejecución del código del programa emulado y, por cada instrucción de código de máquina encontrada, ejecuta operaciones en el procesador host que son semánticamente equivalentes a las instrucciones originales. Esto es posible asignando una variable a cada registro y bandera de la CPU simulada. La lógica de la CPU simulada puede entonces traducirse más o menos directamente en algoritmos de software, creando una reimplementación de software que básicamente refleja la implementación de hardware original.
El siguiente ejemplo ilustra cómo un intérprete puede realizar la simulación de la CPU. En este caso, las interrupciones se comprueban antes de que se ejecute cada instrucción, aunque este comportamiento es raro en emuladores reales por razones de rendimiento (generalmente es más rápido usar una subrutina para hacer el trabajo de una interrupción).
void Execute ( void ) { if ( Interrupt ! = INT_NONE ) { SuperUser = TRUE ; WriteMemory ( ++ StackPointer , ProgramCounter ); ProgramCounter = InterruptPointer ; } switch ( ReadMemory ( ProgramCounter ++ )) { / * * El manejo de cada instrucción válida * va aquí ... * / predeterminado : Interrupt = INT_ILLEGAL ; } }
Los intérpretes son muy populares como simuladores de computadora, ya que son mucho más simples de implementar que las soluciones alternativas más eficientes en el tiempo, y su velocidad es más que adecuada para emular computadoras de hace más de una década en máquinas modernas. Sin embargo, la penalización de velocidad inherente a la interpretación puede ser un problema cuando se emulan computadoras cuya velocidad de procesador está en el mismo orden de magnitud que la máquina host [ dudoso ] . Hasta hace no muchos años, la emulación en tales situaciones era considerada completamente impracticable por muchos [ dudoso ] .
Lo que permitió romper esta restricción fueron los avances en las técnicas de recopilación dinámica [ dudoso ] . La traducción simple a priori del código del programa emulado en código ejecutable en la arquitectura del host suele ser imposible debido a varias razones:
- el código puede modificarse mientras está en la RAM , incluso si solo lo modifica el sistema operativo emulado al cargar el código (por ejemplo, desde el disco)
- Puede que no haya una forma de distinguir de manera confiable los datos (que no deben traducirse) del código ejecutable .
Varias formas de recompilación dinámica, incluida la popular técnica del compilador Just In Time (JIT) , tratan de eludir estos problemas esperando hasta que el flujo de control del procesador salte a una ubicación que contenga código sin traducir, y solo entonces ("justo a tiempo") traduzca un bloque del código en el código de host que se puede ejecutar. El código traducido se guarda en un caché de código [ dudoso ] , y el código original no se pierde ni se ve afectado; de esta manera, incluso los segmentos de datos pueden ser traducidos (sin sentido) por el recompilador, lo que resulta en una pérdida de tiempo de traducción. Es posible que la velocidad no sea deseable, ya que algunos juegos antiguos no se diseñaron teniendo en cuenta la velocidad de las computadoras más rápidas. Un juego diseñado para una PC de 30 MHz con un temporizador de nivel de 300 segundos de juego podría darle al jugador solo 30 segundos en una PC de 300 MHz. Es posible que otros programas, como algunos programas de DOS, ni siquiera se ejecuten en computadoras más rápidas. Particularmente al emular computadoras que eran de "caja cerrada", en las que los cambios en el núcleo del sistema no eran típicos, el software puede usar técnicas que dependen de las características específicas de la computadora en la que se ejecuta (por ejemplo, la velocidad de su CPU) y, por lo tanto, un control preciso de la velocidad de emulación es importante para que dichas aplicaciones se emulen correctamente.
Entrada / salida (E / S)
La mayoría de los emuladores no emulan, como se mencionó anteriormente, el bus del sistema principal ; Por lo tanto, cada dispositivo de E / S a menudo se trata como un caso especial y no se proporciona una interfaz coherente para los periféricos virtuales. Esto puede resultar en una ventaja de rendimiento, ya que cada módulo de E / S puede adaptarse a las características del dispositivo emulado; Los diseños basados en una API de E / S unificada estándar pueden, sin embargo, competir con modelos más simples, si están bien pensados, y tienen la ventaja adicional de proporcionar "automáticamente" un servicio de complemento a través del cual los dispositivos virtuales de terceros pueden ser utilizado dentro del emulador. Es posible que una API de E / S unificada no refleje necesariamente la estructura del bus de hardware real: el diseño del bus está limitado por varias restricciones eléctricas y una necesidad de gestión de concurrencia de hardware que, en su mayoría, puede ignorarse en una implementación de software.
Incluso en los emuladores que tratan a cada dispositivo como un caso especial, suele haber una infraestructura básica común para:
- gestión de interrupciones , mediante un procedimiento que establece indicadores legibles por el simulador de CPU cada vez que se genera una interrupción, lo que permite a la CPU virtual "sondear interrupciones (virtuales)"
- la escritura y lectura de memoria física, por medio de dos procedimientos similares a los que se ocupan de la memoria lógica (aunque, a diferencia de este último, el ex lata a menudo ser dejado fuera, y puede emplear referencias directas a la matriz de memoria en su lugar)
Comparación con simulación
La palabra "emulador" se acuñó en 1963 en IBM [19] durante el desarrollo de la línea de productos NPL ( IBM System / 360 ), utilizando una "nueva combinación de software , microcódigo y hardware ". [20] Descubrieron que la simulación usando instrucciones adicionales implementadas en microcódigo y hardware, en lugar de la simulación de software usando solo instrucciones estándar, para ejecutar programas escritos para computadoras IBM anteriores aumentaba dramáticamente la velocidad de simulación. Anteriormente, IBM proporcionó simuladores para, por ejemplo, el 650 en el 705 . [21] Además de los simuladores, IBM tenía características de compatibilidad en el 709 y 7090 , [22] para lo cual proporcionó a la computadora IBM 709 un programa para ejecutar programas heredados escritos para el IBM 704 en el 709 y posteriormente en el IBM 7090. Este programa usó las instrucciones agregadas por la función de compatibilidad [23] para atrapar instrucciones que requieren un manejo especial; todas las demás instrucciones 704 se ejecutaron de la misma manera en un 7090. La función de compatibilidad en el 1410 [24] solo requería configurar un interruptor de palanca de consola, no un programa de soporte.
En 1963, cuando se utilizó por primera vez el microcódigo para acelerar este proceso de simulación, los ingenieros de IBM acuñaron el término "emulador" para describir el concepto. En la década de 2000, se ha vuelto común utilizar la palabra "emular" en el contexto del software. Sin embargo, antes de 1980, "emulación" se refería únicamente a la emulación con un hardware o asistencia de microcódigo, mientras que "simulación" se refería a la emulación de software pura. [25] Por ejemplo, una computadora construida especialmente para ejecutar programas diseñados para otra arquitectura es un emulador. Por el contrario, un simulador podría ser un programa que se ejecuta en una PC, de modo que se puedan simular juegos antiguos de Atari en él. Los puristas continúan insistiendo en esta distinción, pero actualmente el término "emulación" a menudo significa la imitación completa de una máquina que ejecuta código binario, mientras que "simulación" a menudo se refiere a la simulación por computadora , donde se usa un programa de computadora para simular un modelo abstracto. La simulación por computadora se utiliza en prácticamente todos los dominios científicos y de ingeniería y la informática no es una excepción, con varios proyectos que simulan modelos abstractos de sistemas informáticos, como la simulación de red , que difiere tanto práctica como semánticamente de la emulación de red. [26]
Simuladores de lógica
La simulación lógica es el uso de un programa de computadora para simular el funcionamiento de un circuito digital como un procesador. Esto se hace después de que se haya diseñado un circuito digital en ecuaciones lógicas, pero antes de que el circuito se fabrique en hardware.
Simuladores funcionales
La simulación funcional es el uso de un programa de computadora para simular la ejecución de un segundo programa de computadora escrito en lenguaje ensamblador simbólico o lenguaje compilador , en lugar de código binario de máquina . Mediante el uso de un simulador funcional, los programadores pueden ejecutar y rastrear secciones seleccionadas del código fuente para buscar errores de programación (errores), sin generar código binario. Esto es distinto de simular la ejecución de código binario, que es una emulación de software. El primer simulador funcional fue escrito por Autonetics alrededor de 1960 para probar programas en lenguaje ensamblador para su posterior ejecución en la computadora militar D-17B . Esto hizo posible que los programas de vuelo se escribieran, ejecutaran y probaran antes de que se construyera el hardware de la computadora D-17B. Autonetics también programó un simulador funcional para probar programas de vuelo para su posterior ejecución en la computadora militar D-37C .
Juegos de consolas
Los emuladores de consolas de videojuegos son programas que permiten que una computadora personal o una consola de videojuegos emule otra consola de videojuegos. Se utilizan con mayor frecuencia para jugar a videojuegos de la era de 1980 a 2000 en computadoras personales modernas y consolas de videojuegos más contemporáneas. También se utilizan para traducir juegos a otros idiomas, para modificar juegos existentes y en el proceso de desarrollo de demostraciones de bricolaje "caseras" y en la creación de nuevos juegos para sistemas más antiguos. El Internet ha ayudado en la difusión de los emuladores de consola, ya que la mayoría - si no todos - no estarían disponibles para la venta en los puntos de venta. Ejemplos de emuladores de consola que se han lanzado en las últimas décadas son: RPCS3 , Dolphin , Cemu , PCSX2 , PPSSPP , ZSNES , Citra , ePSXe , Project64 , Visual Boy Advance , Nestopia y Yuzu .
Terminal
Los emuladores de terminal son programas de software que brindan a las computadoras y dispositivos modernos acceso interactivo a aplicaciones que se ejecutan en sistemas operativos de computadoras centrales u otros sistemas host como HP-UX u OpenVMS . Los terminales como IBM 3270 o VT100 y muchos otros ya no se producen como dispositivos físicos. En cambio, el software que se ejecuta en sistemas operativos modernos simula una terminal "tonta" y es capaz de representar los elementos gráficos y de texto de la aplicación host, enviar pulsaciones de teclas y procesar comandos utilizando el protocolo de terminal apropiado. Algunas aplicaciones de emulación de terminal incluyen Attachmate Reflection , IBM Personal Communications y Micro Focus Rumba.
Suplantación de identidad por malware
Debido a su popularidad, los emuladores han sido suplantados por malware. La mayoría de estos emuladores son para consolas de videojuegos como Xbox 360, Xbox One, Nintendo 3DS, etc. Generalmente, estos emuladores hacen afirmaciones actualmente imposibles, como poder ejecutar juegos de Xbox One y Xbox 360 en un solo programa. [27]
Asuntos legales
- Ver artículo Emulador de consola - Problemas legales
Estados Unidos
A medida que las computadoras y las redes informáticas globales continuaron avanzando y los desarrolladores de emuladores se volvieron más hábiles en su trabajo, el tiempo entre el lanzamiento comercial de una consola y su emulación exitosa comenzó a reducirse. Las consolas de quinta generación como Nintendo 64 , PlayStation y las computadoras de mano de sexta generación , como Game Boy Advance , experimentaron un progreso significativo hacia la emulación durante su producción. Esto llevó a un esfuerzo por parte de los fabricantes de consolas para detener la emulación no oficial, pero fallos constantes como Sega v. Accolade 977 F.2d 1510 (9th Cir.1992), Sony Computer Entertainment, Inc. v. Connectix Corporation 203 F.3d 596 ( 2000), y Sony Computer Entertainment America v. Bleem 214 F.3d 1022 (2000), [28] han tenido el efecto contrario. Según todos los precedentes legales, la emulación es legal dentro de los Estados Unidos. Sin embargo, la distribución no autorizada de códigos con derechos de autor sigue siendo ilegal, de acuerdo tanto con el derecho de autor específico del país como con las leyes internacionales de derechos de autor en virtud del Convenio de Berna. [29] [ mejor fuente necesario ] Según la legislación de Estados Unidos, obteniendo un objeto de dumping copia de la máquina original del BIOS es legal bajo el gobernante Lewis Galoob Juguetes, Inc. v. Nintendo of America, Inc. , 964 F. 2d 965 (9th Cir 1992) como uso legítimo siempre que el usuario haya obtenido una copia de la máquina comprada legalmente. Sin embargo, para mitigar esto, varios emuladores para plataformas como Game Boy Advance son capaces de ejecutarse sin un archivo de BIOS, utilizando emulación de alto nivel para simular subrutinas de BIOS a un pequeño costo en precisión de emulación. [ cita requerida ]
Ver también
- Lista de emuladores
- Lista de emuladores de videojuegos
- Lista de emuladores de sistemas informáticos
- La simulación por computadora es el campo más amplio de modelado de fenómenos del mundo real (por ejemplo, física y economía) utilizando computadoras.
- Otros usos del término "emulador" en el campo de la informática:
- Emulador de consola
- Emulador de flash
- Emulador de punto flotante
- Simulador de conjunto de instrucciones
- Emulación de red
- Emulador de servidor
- Emulador de terminal
- Semulación
- Simulación lógica
- Simulación funcional
- Traducción:
- Traducción binaria
- Emulador en circuito (ICE)
- Grupo de Acción de Prueba Conjunta
- Interfaz del modo de depuración en segundo plano
- QEMU
- Q (emulador)
- Emulación de hardware
- Virtualización asistida por hardware
- Máquina virtual
Referencias
- ^ Warick, Mike (abril de 1988). "Emulación MS-DOS para los 64" . ¡Calcular! . pag. 43 . Consultado el 10 de noviembre de 2013 .
- ^ "¿Qué es la emulación?" . Koninklijke Bibliotheek . Consultado el 11 de diciembre de 2007 .
- ↑ van der Hoeven, Jeffrey, Bram Lohman y Remco Verdegem. "Emulación para la preservación digital en la práctica: los resultados". The International Journal of Digital Curation 2.2 (2007): 123-132.
- ^ a b Muira, Gregory. "Impulsando los límites de la política del patrimonio tradicional: mantener el acceso a largo plazo al contenido multimedia". IFLA Journal 33 (2007): 323-326.
- ^ Rothenberg, Jeffrey (1998). " " Criterios para una solución ideal. "Evitar arenas movedizas tecnológicas: encontrar una base técnica viable para la preservación digital" . Consejo de Bibliotecas y Recursos de Información . Washington, DC . Consultado el 8 de marzo de 2008 .
- ^ Rothenberg, Jeffrey. "La solución de emulación". Evitar las arenas movedizas tecnológicas: encontrar una base técnica viable para la preservación digital. Washington, DC: Consejo de Recursos de Información y Bibliotecas, 1998. Consejo de Recursos de Información y Bibliotecas. 2008. 28 de marzo de 2008 http://www.clir.org/pubs/reports/rothenberg/contents.html
- ^ Miura, Gregory (2016). "Ampliando los límites de la política de patrimonio tradicional: mantener el acceso a largo plazo a los contenidos multimedia". IFLA Journal . 33 (4): 323–6. doi : 10.1177 / 0340035207086058 .
- ^ Granger, Stewart. Preservación y emulación digital: de la teoría a la práctica. Proc. del Encuentro ichim01, vol. 2, 3 y 7 de septiembre de 2001. Milán, Italia. Toronto: Archives and Museum Informatics, Universidad de Toronto, 2001. 28 de marzo de 2008 http://www.leeds.ac.uk/cedars/pubconf/papers/ichim01SG.html Archivado el 31 de enero de 2009en Wayback Machine.
- ^ Verdegem, Remco; Lohman, Bram; Van Der Hoeven, Jeffrey (2008). "Emulación para la preservación digital en la práctica: los resultados" . Revista Internacional de Curación Digital . 2 (2): 123–32. doi : 10.2218 / ijdc.v2i2.35 .
- ^ Granger, Stewart. "La emulación como estrategia de preservación digital". Revista D-Lib 6.19 (2000). 29 de marzo de 2008 http://www.dlib.org/dlib/october00/granger/10granger.html
- ^ Rothenberg, Jeffrey. "La solución de emulación". Evitar las arenas movedizas tecnológicas: encontrar una base técnica viable para la preservación digital. Washington, DC: Consejo de Recursos de Información y Bibliotecas, 1998. Consejo de Recursos de Información y Bibliotecas. 2008. 28 de marzo de 2008
- ^ {{Cite web | url = http://tcrf.net/Pok%C3%A9mon_Black_and_White#Anti-Piracy{{full%7Cdate=September | title = Copia archivada | access-date = 2012-12-30 | archive- url = https://web.archive.org/web/20130606033535/http://tcrf.net/Pok%C3%A9mon_Black_and_White#Anti-Piracy{{full%7Cdate=September | archive-date = 2013-06-06 | url-status = dead}}
- ^ "Mega Man Star Force - El piso de la sala de despiece" . tcrf.net . Archivado desde el original el 12 de mayo de 2013 . Consultado el 30 de diciembre de 2012 .
- ^ "Ecos del arte: la emulación como estrategia de conservación" . Archivado desde el original el 27 de octubre de 2007 . Consultado el 11 de diciembre de 2007 .
- ^ Peter Magnusson (2004). "Simulación de sistema completo: eslabón perdido del desarrollo de software" .
- ^ "Depuración y simulación del sistema completo" .
- ^ Vania Joloboff (2009). "Simulación de sistema completo de sistemas integrados" (PDF) . Archivado desde el original (PDF) el 09/02/2014 . Consultado el 22 de abril de 2012 .
- ^ GuideStorm. "Emuladores de PlayStation 4" . Consultado el 4 de agosto de 2019 .
- ^ Pugh, Emerson W. (1995). Construyendo IBM: Dando forma a una industria y su tecnología . MIT. pag. 274. ISBN 0-262-16147-8.
- ^ Pugh, Emerson W .; et al. (1991). Sistemas 360 y Early 370 de IBM . MIT. ISBN 0-262-16123-0. páginas 160-161
- ^ Simulación del IBM 650 en el IBM 705
- ^ "Archivos de IBM: Sistema de procesamiento de datos 7090 (continuación)" . www-03.ibm.com . 23 de enero de 2003.
- ^ "Operaciones de compatibilidad del sistema". Manual de referencia del sistema de procesamiento de datos IBM 7090 (PDF) . Marzo de 1962. págs. 65–66. A22-6528-4.
- ^ "Operaciones de compatibilidad del sistema". Principios de funcionamiento de IBM 1410 (PDF) . Marzo de 1962. págs. 56–57, 98–100. A22-0526-3.
- ^ Tucker, S. G. (1965). "Emulación de grandes sistemas". Comunicaciones de la ACM . 8 (12): 753–61. doi : 10.1145 / 365691.365931 .
- ^ "¿Simulación o emulación de red?" . Mundo de la red . Mundo de la red . Consultado el 22 de septiembre de 2017 .
- ^ "La imitación de la emulación" . Malwarebytes Labs . Consultado el 30 de mayo de 2016 .
- ^ "Sony Computer Entertainment America v. Bleem, 214 F. 3d 1022" . Noveno Circuito 2000. Google Scholar . Tribunal de Apelaciones (publicado el 4 de mayo de 2000). 14 de febrero de 2000 . Consultado el 15 de junio de 2016 .
- ^ ver Midway Manufacturing Co. v. Artic International, Inc. , 574 F.Supp. 999, aff'd, 704 F.2d 1009 (9th Cir 1982) (sosteniendo que la ROM de la computadora de Pac Man es una fijación suficiente para los propósitos de la ley de derechos de autor, aunque el juego cambia cada vez que se juega) y el Artículo 2 de Berna Convención
enlaces externos
- Repertorio de emuladores y sus respectivas historias (archivado; sitio cerrado en 2010 debido a problemas de derechos de autor).
- Emulador en Curlie