stringtranslate.com

Emulador

DOSBox emula la interfaz de línea de comandos de DOS.
Una aplicación de emulación para la calculadora programable HP-41C X de 1983 que se ejecuta en Apple iOS . Además, se puede visualizar la salida de la impresora térmica histórica de esta línea de calculadora.

En informática , un emulador es hardware o software que permite que un sistema informático (llamado anfitrión ) se comporte como otro sistema informático (llamado invitado ). Un emulador normalmente permite que el sistema anfitrión 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 de emular (o imitar) otro programa o dispositivo.

Muchas impresoras , por ejemplo, están diseñadas para emular las 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 la impresora que no es HP y producirá una impresión equivalente. Desde al menos la década de 1990, muchos entusiastas y aficionados a los videojuegos han utilizado emuladores para jugar juegos arcade clásicos de la década de 1980 utilizando el código de máquina y los datos originales de la década de 1980, que son interpretados por un sistema de la era actual, y para emular videojuegos antiguos. consolas .

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 matrices de puertas programables en campo . La tesis de Church-Turing implica que, en teoría, 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, sobre todo cuando el comportamiento exacto del sistema a emular no está documentado y debe deducirse mediante ingeniería inversa . Tampoco dice nada sobre limitaciones de tiempo; Si el emulador no funciona tan rápido como lo hacía con el hardware original, el software dentro de la emulación puede ejecutarse mucho más lentamente (posiblemente provocando interrupciones del temporizador que alteran 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 el lago Michigan con una cucharadita .

— ¡  Carta para Computar! y respuesta editorial, abril de 1988 [1]

Tipos

Windows XP ejecuta un emulador de Arquímedes , que a su vez ejecuta un emulador de ZX Spectrum
Tetris ejecutándose en el emulador Wzonka-Lad Game Boy en AmigaOS , que a su vez se ejecuta en E-UAE en un moderno sistema Fedora Linux

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 se debe proporcionar (y puede emularse). Tanto el sistema operativo como el software serán interpretados por el emulador, en lugar de ejecutarse mediante hardware nativo. Además 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 influyera en lo que se muestra en la pantalla, entonces sería necesario emular esto. Si bien la emulación podría, si se lleva al extremo, bajar al nivel atómico, basando su resultado en una simulación del circuito real de una fuente de energía virtual, esta sería una solución muy inusual. Los emuladores normalmente 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 los ordenadores domésticos clásicos como el Commodore 64 , cuyo software depende a menudo de trucos de programación de bajo nivel muy sofisticados inventados por los programadores de juegos y la " demoscene ".

Por el contrario, algunas otras plataformas han utilizado muy poco el direccionamiento directo de hardware, como un emulador para PlayStation 4. [2] 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 anfitrión, por ejemplo, la capa de compatibilidad de Linux utilizada en *BSD para ejecutar software nativo de Linux de código cerrado en FreeBSD y NetBSD . [3] Por ejemplo, si bien el procesador gráfico de Nintendo 64 era completamente 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 suelen diseñar su software en emuladores especialmente precisos llamados simuladores antes de probarlo en el hardware real. Esto es para que el software se pueda producir y probar antes de que exista el hardware final en grandes cantidades, de modo que se pueda probar sin tomarse el tiempo para copiar el programa que se va a depurar a un nivel bajo 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 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 realizará una interrupción determinada (coprocesador no disponible), llamando a las rutinas del emulador matemático. Cuando la instrucción se emula con éxito, el programa continúa ejecutándose.

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. [4] Esto se hace después de que un circuito digital ha sido diseñado en ecuaciones lógicas, pero antes de que el circuito se fabrique en hardware.

Emuladores 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 en código de máquina binario . Al utilizar un simulador funcional, los programadores pueden ejecutar y rastrear secciones seleccionadas del código fuente para buscar errores de programación (bugs), 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 informático del D-17B. Autonetics también programó un simulador funcional para probar programas de vuelo para su posterior ejecución en el ordenador militar D-37C .

Emuladores de consolas de videojuegos

Los emuladores de consolas de videojuegos son programas que permiten que un ordenador personal o una consola de videojuegos emule otra consola de videojuegos. Se utilizan con mayor frecuencia para jugar videojuegos antiguos de las décadas 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. Internet ha ayudado a la difusión de los emuladores de consolas, 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 .

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. [5]

Asuntos legales

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 período de 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 portátiles 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 hubo fallas 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), [6] han tenido el efecto contrario. Según todos los precedentes legales, la emulación es legal en los Estados Unidos. Sin embargo, la distribución no autorizada de códigos protegidos por derechos de autor sigue siendo ilegal, según las leyes de derechos de autor específicas de cada país y las leyes internacionales de derechos de autor según el Convenio de Berna . [7] [ se necesita mejor fuente ] Según la ley de los Estados Unidos, obtener una copia descartada del BIOS de la máquina original es legal según el fallo Lewis Galoob Toys, Inc. contra Nintendo of America, Inc. , 964 F.2d 965 (9th Cir . 1992) como uso legítimo siempre que el usuario obtenga una copia comprada legalmente de la máquina. Sin embargo, para mitigar esto, varios emuladores para plataformas como Game Boy Advance son capaces de ejecutarse sin un archivo BIOS, utilizando emulación de alto nivel para simular subrutinas BIOS con un ligero costo en precisión de emulación. [ cita necesaria ]

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 . Terminales como el IBM 3270 o el VT100 y muchos otros ya no se fabrican como dispositivos físicos. En cambio, el software que se ejecuta en los 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.

Otros tipos

Otros tipos de emuladores incluyen:

Estructura y organización

Normalmente, un emulador se divide en módulos que corresponden aproximadamente a los subsistemas de la computadora emulada. En la mayoría de los casos, un emulador estará compuesto por los siguientes módulos:

Los buses a menudo no se emulan, ya sea por razones de rendimiento o de simplicidad, y los periféricos virtuales se comunican directamente con la CPU o el subsistema de memoria.

Subsistema de memoria

Es posible reducir la emulación del subsistema de memoria a simplemente una serie de elementos, cada uno del tamaño de una palabra emulada; sin embargo, este modelo falla muy rápidamente tan pronto como alguna 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). 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 asignadas en memoria ; incluso aquellos que no suelen tener un bloque de memoria lógica asignado a la ROM , lo que significa que el módulo de matriz de memoria debe descartarse si se quiere emular la naturaleza de sólo lectura de la ROM. Funciones como el cambio de banco o la segmentación 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 en la memoria lógica, y es 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 parecido a los siguientes procedimientos sería típico:

void WriteMemory ( dirección de palabra , valor de palabra ) { direcciónreal de palabra ; DirecciónReal = Dirección + RegistroBase ; if (( Dirección Real < Registro Límite ) && ( Dirección Real > TAMAÑO ROM )) { Memoria [ Dirección Real ] = Valor ; } más { RaiseInterrupt ( INT_SEGFAULT ); } }                             
palabra ReadMemory ( palabra Dirección ) { palabra Dirección Real ; DirecciónReal = Dirección + RegistroBase ; if ( DirecciónReal < RegistroLímite ) { retornar Memoria [ DirecciónReal ]; } más { RaiseInterrupt ( INT_SEGFAULT ); devolver NULO ; } }                    

simulador de CPU

El simulador de CPU suele ser la parte más complicada de un emulador. Muchos emuladores están escritos utilizando simuladores de CPU "preempaquetados" para 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 luego 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 verifican antes de ejecutar 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 Ejecutar ( void ) { if ( Interrupt != INT_NONE ) { SuperUser = TRUE ; WriteMemory ( ++ StackPointer , ProgramCounter ); Contador de programas = Puntero de interrupción ; } 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 soluciones alternativas más eficientes en términos de 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 al emular computadoras cuya velocidad de procesador es del mismo orden de magnitud que la máquina anfitriona [ dudoso ] . Hasta hace no muchos años, muchos consideraban que la emulación en tales situaciones era completamente impracticable [ dudoso ] .

Lo que permitió romper esta restricción fueron los avances en las técnicas de recompilación dinámica [ dudoso ] . La traducción simple a priori del código de programa emulado a código ejecutable en la arquitectura del host suele ser imposible por varias razones:

Varias formas de recompilación dinámica, incluida la popular técnica del compilador Just In Time (JIT) , intentan sortear estos problemas esperando hasta que el flujo de control del procesador salte a una ubicación que contiene código sin traducir, y sólo entonces ("justo a tiempo") traduce un bloque del código en código 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, el recompilador puede traducir incluso segmentos de datos (sin sentido), lo que no supone más que 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. En particular, 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 utilizar técnicas que dependen de características específicas de la computadora en la que se ejecuta (por ejemplo, la velocidad de su CPU) y, por lo tanto, de un control preciso. La velocidad de emulación es importante para que dichas aplicaciones se emulen correctamente.

Entrada/salida (E/S)

La mayoría de los emuladores, como se mencionó anteriormente, no emulan el bus principal del sistema ; Por lo tanto, cada dispositivo de E/S se trata a menudo como un caso especial y no se proporciona una interfaz consistente para los periféricos virtuales. Esto puede resultar en una ventaja de rendimiento, ya que cada módulo de E/S se puede adaptar a las características del dispositivo emulado; Sin embargo , los diseños basados ​​en una API de E/S unificada estándar pueden rivalizar 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 dispositivos virtuales de terceros pueden ser utilizado dentro del emulador. Es posible que una API de E/S unificada no necesariamente refleje 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 emuladores que tratan cada dispositivo como un caso especial, suele existir una infraestructura básica común para:

Aplicaciones

En preservación

La emulación es una estrategia en pos de la preservación digital y la lucha contra la obsolescencia . La emulación se centra en recrear un entorno informático original, lo que puede llevar mucho tiempo y ser difícil de lograr, pero valioso por su capacidad de mantener una conexión más estrecha con la autenticidad del objeto digital, el sistema operativo o incluso la plataforma de juego. [8] La emulación aborda el entorno de hardware y software original del objeto digital y lo recrea en una máquina actual. [9] El emulador permite al usuario tener acceso a cualquier tipo de aplicación o sistema operativo en una plataforma actual , mientras el software se ejecuta como lo hacía en su entorno original. [10] Jeffery Rothenberg, uno de los primeros defensores de la emulación como estrategia de preservación digital , afirma que "el enfoque ideal proporcionaría una solución única , extensible y a largo plazo que pueda diseñarse de una vez por todas y aplicarse de manera uniforme, automática y en sincronía organizada". (por ejemplo, en cada ciclo de actualización) a todo tipo de documentos y soportes". [11] Afirma además que esto no sólo debería aplicarse a sistemas obsoletos, sino que también debería ser móvil ascendente hacia futuros sistemas desconocidos. [12] En términos prácticos, cuando una determinada aplicación se lanza en una nueva versión, en lugar de abordar los problemas de compatibilidad y migración de 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.

En el arte de los nuevos medios

Debido a su uso principal de formatos digitales, el arte de los nuevos medios depende en gran medida de 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 de hardware que envejece y se vuelve obsoleto. La paradoja es que hay que hacer que la emulación y el emulador funcionen en las computadoras del futuro. [13]

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 brindar la capacidad de detectar, recrear y reparar fallas en el diseño incluso antes de que se construya el sistema. [14] Es particularmente útil en el diseño de sistemas multinúcleo , donde los errores de concurrencia pueden ser muy difíciles de detectar y corregir sin el entorno controlado proporcionado por el hardware virtual. [15] Esto también permite que el desarrollo del software se lleve a cabo antes de que el hardware esté listo, [16] ayudando así a validar las decisiones de diseño y dar un poco más de control.

Comparación con simulación

La palabra "emulador" fue acuñada en 1963 en IBM [17] durante el desarrollo de la línea de productos NPL ( IBM System/360 ), utilizando una "nueva combinación de software , microcódigo y hardware ". [18] Descubrieron que la simulación utilizando instrucciones adicionales implementadas en microcódigo y hardware, en lugar de simulación de software usando solo instrucciones estándar, para ejecutar programas escritos para computadoras IBM anteriores aumentaba drásticamente la velocidad de simulación. Anteriormente, IBM proporcionó simuladores , por ejemplo, para el 650 en el 705 . [19] Además de los simuladores, IBM tenía funciones de compatibilidad en el 709 y el 7090 , [20] 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 utilizó las instrucciones agregadas por la función de compatibilidad [21] para capturar 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 [22] solo requería configurar un interruptor 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 volvió 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 asistencia de hardware o microcódigo, mientras que "simulación" se refería a la emulación de software puro. [23] Por ejemplo, una computadora especialmente construida 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 un PC, de modo que en él se puedan simular juegos antiguos de Atari. 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 utiliza un programa de computadora para simular un modelo abstracto. La simulación por computadora se utiliza prácticamente en 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 redes , que difiere práctica y semánticamente de la emulación de redes. [24]

Comparación con la virtualización de hardware

La virtualización de hardware es la virtualización de computadoras como plataformas de hardware completas, ciertas abstracciones lógicas de sus componentes o solo la funcionalidad requerida para ejecutar varios sistemas operativos . La virtualización oculta a los usuarios las características físicas de una plataforma informática, presentando en cambio una plataforma informática abstracta. [25] [26] En sus orígenes, el software que controlaba la virtualización se llamaba "programa de control", pero los términos " hipervisor " o "monitor de máquina virtual" se volvieron preferidos con el tiempo. [27] Cada hipervisor puede administrar o ejecutar múltiples máquinas virtuales .

Ver también

Referencias

  1. ^ Warick, Mike (abril de 1988). "Emulación de MS-DOS para el 64". ¡Calcular! . pag. 43 . Consultado el 10 de noviembre de 2013 .
  2. ^ GuíaTormenta. "Emuladores de PlayStation 4" . Consultado el 4 de agosto de 2019 .
  3. ^ Emulación de Linux eliminada de OpenBSD en la versión 6.0 https://www.openbsd.org/60.html
  4. ^ Automatización del diseño electrónico: síntesis, verificación y prueba. Laung-Terng Wang, Yao-Wen Chang, Kwang-Ting Cheng. Ámsterdam: Morgan Kaufmann/Elsevier. 2009.ISBN _ 978-0-08-092200-3. OCLC  433173319.{{cite book}}: CS1 maint: others (link)
  5. ^ "La imitación de la emulación". Laboratorios Malwarebytes . 17 de octubre de 2014 . Consultado el 30 de mayo de 2016 .
  6. ^ ver Midway Manufacturing Co. contra Artic International, Inc. , 574 F.Supp. 999, aff'd, 704 F.2d 1009 (9th Cir 1982) (que sostiene que la ROM de la computadora de Pac Man es una fijación suficiente para los fines de la ley de derechos de autor, incluso si el juego cambia cada vez que se juega) y el Artículo 2 de la Ley de Berna. Convención
  7. ^ "¿Qué es la emulación?". Biblioteca Koninklijke . Archivado desde el original el 13 de septiembre de 2015 . Consultado el 11 de diciembre de 2007 .
  8. ^ van der Hoeven, Jeffrey, Bram Lohman y Remco Verdegem. "Emulación para la preservación digital en la práctica: los resultados". La Revista Internacional de Curación Digital 2.2 (2007): 123-132.
  9. ^ Muira, Gregorio. " Ampliar los límites de la política del patrimonio tradicional: mantener el acceso a largo plazo al contenido multimedia ". Revista IFLA 33 (2007): 323-326.
  10. ^ Rothenberg, Jeffrey (1998). ""Criterios para una solución ideal. "Evitar las 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 .
  11. ^ Rothenberg, Jeffrey. "La solución de emulación". Evitar arenas movedizas tecnológicas: encontrar una base técnica viable para la preservación digital. Washington, DC: Consejo de Bibliotecas y Recursos de Información, 1998. Consejo de Bibliotecas y Recursos de Información. 2008. 28 de marzo de 2008 http://www.clir.org/pubs/reports/rothenberg/contents.html
  12. ^ "Ecos del arte: la emulación como estrategia de preservación". Archivado desde el original el 27 de octubre de 2007 . Consultado el 11 de diciembre de 2007 .
  13. ^ Peter Magnusson (2004). "Simulación completa del sistema: el eslabón perdido del desarrollo de software".
  14. ^ "Depuración y simulación completa del sistema".
  15. ^ Vania Joloboff (2009). "Simulación completa de sistemas integrados" (PDF) . Archivado desde el original (PDF) el 9 de febrero de 2014 . Consultado el 22 de abril de 2012 .
  16. ^ Pugh, Emerson W. (1995). Construyendo IBM: dando forma a una industria y su tecnología . MIT. pag. 274.ISBN _ 0-262-16147-8.
  17. ^ Pugh, Emerson W.; et al. (1991). Sistemas 360 y principios de 370 de IBM . MIT. ISBN 0-262-16123-0.páginas 160-161
  18. ^ Simulación del IBM 650 en el IBM 705
  19. ^ "Archivos de IBM: sistema de procesamiento de datos 7090 (continuación)". www-03.ibm.com . 23 de enero de 2003.
  20. ^ "Operaciones de compatibilidad del sistema". Manual de referencia Sistema de procesamiento de datos IBM 7090 (PDF) . Marzo de 1962. págs. 65–66. A22-6528-4.
  21. ^ "Operaciones de compatibilidad del sistema". Principios de funcionamiento de IBM 1410 (PDF) . Marzo de 1962. págs. 56–57, 98–100. A22-0526-3.
  22. ^ Tucker, SG (1965). "Emulación de grandes sistemas". Comunicaciones de la ACM . 8 (12): 753–61. doi : 10.1145/365691.365931 . S2CID  15375675.
  23. ^ "¿Simulación o emulación de red?". Mundo de la Red . 22 de septiembre de 2017 . Consultado el 22 de septiembre de 2017 .
  24. ^ Turbante, E; Rey, D.; Lee, J.; Viehland, D. (2008). "19". Comercio electrónico: una perspectiva gerencial (PDF) (5ª ed.). Prentice Hall. pag. 27.
  25. «Virtualización en la educación» (PDF) . IBM . Octubre de 2007 . Consultado el 6 de julio de 2010 .
  26. ^ Creasy, RJ (1981). "El origen del sistema de tiempo compartido VM/370" (PDF) . IBM . Consultado el 26 de febrero de 2013 .

enlaces externos