
En informática , un emulador es un hardware o software que permite que un sistema informático (llamado anfitrión ) se comporte como otro sistema informático (llamado invitado ). Un emulador generalmente 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 informático 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 una cantidad significativa de software está escrito específicamente para los modelos HP. Si una impresora que no es HP emula una impresora HP, cualquier software diseñado para una impresora HP real también funcionará en el dispositivo que no es HP, produciendo resultados de impresión equivalentes. Desde al menos la década de 1990, muchos entusiastas y aficionados a los videojuegos han utilizado emuladores para jugar a juegos arcade clásicos de la década de 1980 utilizando el código máquina y los datos originales de los juegos de esa década, que son interpretados por un sistema de la era actual, y para emular consolas de videojuegos antiguas (véase emulador de consola de videojuegos ).
Un emulador de hardware es un emulador que adopta la forma de un dispositivo de hardware. Algunos ejemplos son la tarjeta compatible con DOS instalada en algunos ordenadores Macintosh de la década de 1990 , como el Centris 610 o el Performa 630 , que les permitía ejecutar programas de software para ordenadores personales (PC), y los emuladores de hardware basados en matrices de puertas programables en campo (FPGA ). La tesis de Church-Turing implica que, teóricamente, cualquier entorno operativo puede emularse dentro de cualquier otro entorno, siempre 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 que se va a emular no está documentado y debe deducirse mediante ingeniería inversa . Tampoco menciona las restricciones 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 (lo que podría provocar interrupciones del temporizador que alteren el comportamiento).
"¿Puede un Commodore 64 emular MS-DOS ?" Sí, es posible que un [Commodore] 64 emule un IBM PC [que usa MS-DOS], en el mismo sentido que es posible achicar el agua del lago Michigan con una cucharilla .
— Carta a Compute! y respuesta editorial, abril de 1988 [ 1 ]
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 emularse). Tanto el sistema operativo como el software serán interpretados por el emulador, en lugar de ejecutarse en el hardware nativo. Además de este intérprete para el lenguaje de la máquina binaria emulada , también debe proporcionarse virtualmente otro hardware (como dispositivos de entrada o salida); por ejemplo, si escribir en una ubicación de memoria específica debe influir en lo que se muestra en la pantalla, esto deberá emularse. Si bien la emulación podría, en un caso extremo, llegar al nivel atómico, basando su salida en una simulación del circuito real a partir de una fuente de alimentación virtual, esta sería una solución muy inusual. Los emuladores generalmente se limitan a simular las especificaciones de hardware documentadas y la lógica digital. Una 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. Esto se ve especialmente en el caso de los ordenadores domésticos clásicos, como el Commodore 64 , cuyo software a menudo depende de trucos de programación de bajo nivel muy sofisticados inventados por programadores de videojuegos y la " demoscene ".
En contraste, algunas otras plataformas han tenido muy poco uso del direccionamiento directo de hardware, como un emulador para PlayStation 4. En estos casos, una capa de compatibilidad simple puede ser suficiente. Esto traduce las llamadas al sistema para el sistema externo a 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 . [ 2 ] Por ejemplo, si bien el procesador gráfico de Nintendo 64 era totalmente programable, la mayoría de los juegos usaban uno de unos pocos programas prefabricados, que eran en su mayoría autocontenidos 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 embebidos o consolas de videojuegos a menudo diseñan su software en emuladores especialmente precisos llamados simuladores antes de probarlo en el hardware real. Esto permite producir y probar el software antes de que el hardware final exista en grandes cantidades, de modo que se pueda probar sin tener que copiar el programa a depurar a bajo nivel y sin introducir los efectos secundarios de un depurador . En muchos casos, el simulador lo produce la misma empresa que suministra el hardware, lo que teóricamente aumenta su precisión. Los emuladores de coprocesadores matemáticos 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 no hay un coprocesador matemático instalado o presente en la CPU, cuando esta ejecuta una instrucción del coprocesador, se produce una interrupción determinada (coprocesador no disponible), llamando a las rutinas del emulador matemático. Cuando la instrucción se emula correctamente, el programa continúa su ejecución.
Simuladores lógicos
La simulación lógica consiste en utilizar un programa informático para simular el funcionamiento de un circuito digital, como un procesador. [ 3 ] Esto se realiza después de que el circuito digital haya sido diseñado mediante ecuaciones lógicas, pero antes de su fabricación en hardware.
emuladores funcionales
La simulación funcional consiste en utilizar un programa informático para simular la ejecución de un segundo programa escrito en lenguaje ensamblador simbólico o lenguaje compilado , en lugar de en código máquina binario . Mediante 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 se diferencia de la simulación de la ejecución de código binario, que es la 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 permitió escribir, ejecutar y probar programas de vuelo 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 .
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. Se utilizan principalmente para jugar a videojuegos antiguos de los años 80 a los 2000 en ordenadores personales modernos y consolas de videojuegos más recientes. También se utilizan para traducir juegos a otros idiomas, modificar juegos existentes y en el proceso de desarrollo de demos caseras y en la creación de nuevos juegos para sistemas antiguos. Internet ha contribuido 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 tiendas. Algunos ejemplos de emuladores de consolas lanzados 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. [ 4 ]
Cuestiones 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 tiempo entre el lanzamiento comercial de una consola y su emulación exitosa comenzó a acortarse. Las consolas de quinta generación , como Nintendo 64 y PlayStation , y las 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 los fabricantes de consolas a un esfuerzo por detener la emulación no oficial, pero los constantes fracasos 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), [ 5 ] 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ódigo con derechos de autor sigue siendo ilegal, según la legislación específica de derechos de autor de cada país y la legislación internacional de derechos de autor bajo el Convenio de Berna . [ 6 ] Según la ley de los Estados Unidos, obtener una copia volcada de la BIOS de la máquina original es legal según el fallo Lewis Galoob Toys, Inc. v. Nintendo of America, Inc. , 964 F.2d 965 (9th Cir. 1992) como uso justo 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 BIOS, utilizando emulación de alto nivel para simular subrutinas BIOS a costa de una ligera pérdida de precisión en la emulación. [ 7 ] [ 8 ] [ 9 ]
Terminal
Los emuladores de terminal son programas que proporcionan a los ordenadores y dispositivos modernos acceso interactivo a aplicaciones que se ejecutan en sistemas operativos de ordenadores centrales u otros sistemas anfitriones como HP-UX u OpenVMS . Terminales como el IBM 3270 o el VT100 , entre muchos otros, ya no se fabrican como dispositivos físicos. En su lugar, el software que se ejecuta en sistemas operativos modernos simula un terminal "tonto" y es capaz de mostrar los elementos gráficos y de texto de la aplicación anfitriona, enviar pulsaciones de teclas y procesar comandos utilizando el protocolo de terminal adecuado. Algunas aplicaciones de emulación de terminal incluyen Attachmate Reflection , IBM Personal Communications y Micro Focus Rumba.
Otros tipos
Otros tipos de emuladores incluyen:
- Emulador de hardware : el proceso de imitar el comportamiento de uno o más componentes de hardware (normalmente un sistema en fase de diseño) con otro componente de hardware, normalmente un sistema de emulación de propósito especial.
- Emulador en circuito : uso de un dispositivo de hardware para depurar el software de un sistema embebido.
- Emulador de punto flotante : Algunos dispositivos de punto flotante solo admiten las operaciones más simples: suma, resta y multiplicación. En sistemas sin hardware de punto flotante, la CPU lo emula mediante una serie de operaciones aritméticas de punto fijo más simples que se ejecutan en la unidad lógica aritmético-entera.
- Simulador de conjunto de instrucciones en un lenguaje de programación de alto nivel : Imita el comportamiento de un ordenador central o un microprocesador "leyendo" instrucciones y manteniendo variables internas que representan los registros del procesador .
- Emulación de red : técnica para probar el rendimiento de aplicaciones reales en una red virtual. Esto difiere de la simulación de red, donde se aplican modelos virtuales de tráfico, modelos de red, canales y protocolos.
- Emulador de servidor : Los videojuegos multijugador suelen depender de un servidor de juego en línea, que puede o no estar disponible para su instalación local. Un emulador de servidor es un servidor local no oficial que imita el comportamiento del servidor en línea oficial, aunque su funcionamiento interno pueda ser diferente.
- Semulación : el proceso de controlar una emulación a través de un simulador.
Estructura y organización
Normalmente, un emulador se divide en módulos que se corresponden aproximadamente con los subsistemas del ordenador emulado. Por lo general, 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 objetivo que se está emulando tenga la misma arquitectura de CPU que el host, en cuyo caso se puede utilizar 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 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 una simple matriz de elementos, cada uno del tamaño de una palabra emulada; sin embargo, este modelo falla rápidamente si alguna ubicación en la memoria lógica del ordenador no coincide con la memoria física . Esto ocurre claramente cuando el hardware emulado permite una gestión de memoria avanzada (en cuyo caso, la lógica de la MMU puede integrarse en el emulador de memoria, convertirse en un módulo independiente o, a veces, integrarse en el simulador de CPU). Aun si el ordenador emulado no dispone de una MMU, suelen existir otros factores que rompen la equivalencia entre la memoria lógica y la física: muchas arquitecturas (si no la mayoría) ofrecen E/S mapeadas en memoria ; incluso aquellas que no lo hacen suelen tener un bloque de memoria lógica mapeado a la ROM , lo que implica que el módulo de la matriz de memoria debe descartarse si se pretende emular la naturaleza de solo lectura de la ROM. Funcionalidades como la conmutación de bancos 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 responsabilidad 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, lo típico sería algo parecido a los siguientes procedimientos:
void WriteMemory ( word Address , word Value ) { word RealAddress ; RealAddress = Address + BaseRegister ; if (( RealAddress < LimitRegister ) && ( RealAddress > ROMSIZE )) { Memory [ RealAddress ] = Value ; } else { RaiseInterrupt ( INT_SEGFAULT ); } }palabra ReadMemory ( palabra Address ) { palabra RealAddress ; RealAddress = Address + 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 compleja de un emulador. Muchos emuladores se escriben utilizando simuladores de CPU preconfigurados para centrarse en una emulación eficiente de una máquina específica. La forma más sencilla de un simulador de CPU es un intérprete , un programa informático que sigue el flujo de ejecución del código del programa emulado y, para cada instrucción de código máquina encontrada, ejecuta en el procesador anfitrión operaciones semánticamente equivalentes a las instrucciones originales. Esto se logra asignando una variable a cada registro y bandera de la CPU simulada. La lógica de la CPU simulada se puede traducir, casi directamente, a algoritmos de software, creando una reimplementación que reproduce fielmente la implementación de hardware original.
El siguiente ejemplo ilustra cómo un intérprete puede realizar una simulación de CPU. En este caso, se comprueban las interrupciones antes de ejecutar cada instrucción, aunque este comportamiento es poco común en los emuladores reales por motivos de rendimiento (generalmente es más rápido usar una subrutina para realizar la función de una interrupción).
void Execute ( void ) { if ( Interrupt != INT_NONE ) { SuperUser = TRUE ; WriteMemory ( ++ StackPointer , ProgramCounter ); ProgramCounter = InterruptPointer ; } switch ( ReadMemory ( ProgramCounter ++ )) { /* * Aquí se maneja cada instrucción válida *... */ default : Interrupt = INT_ILLEGAL ; } }Los intérpretes son muy populares como simuladores de computadora, ya que son mucho más sencillos de implementar que las soluciones alternativas más eficientes en cuanto a tiempo, y su velocidad es más que suficiente para emular computadoras de hace aproximadamente 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 . Hasta hace pocos años, la emulación en tales situaciones era considerada completamente impracticable por muchos .
Lo que permitió superar esta restricción fueron los avances en las técnicas de recompilación dinámica . La traducción simple a priori del código del programa emulado a 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 la modificación la realiza únicamente el sistema operativo emulado al cargar el código (por ejemplo, desde el disco).
- Puede que no exista una forma fiable de distinguir los datos (que no deberían traducirse) del código ejecutable .
Diversas formas de recompilación dinámica, incluida la popular técnica del compilador Just In Time (JIT) , intentan sortear estos problemas esperando a que el flujo de control del procesador salte a una ubicación que contenga código sin traducir, y solo entonces ("justo a tiempo") traduce un bloque de código a código ejecutable. El código traducido se guarda en una caché de código , 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 no resulta en más que una pérdida de tiempo de traducción. La velocidad puede no ser deseable, ya que algunos juegos antiguos no fueron diseñados 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. Otros programas, como algunos programas de DOS, pueden ni siquiera ejecutarse en computadoras más rápidas. En particular, al emular ordenadores de "caja cerrada", en los que no eran habituales los cambios en el núcleo del sistema, el software puede utilizar técnicas que dependen de las características específicas del ordenador en el que se ejecuta (por ejemplo, la velocidad de su CPU), por lo que un control preciso de la velocidad de emulación es importante para que dichas aplicaciones se emulen correctamente.
Entrada/salida (E/S)
Como se mencionó anteriormente, la mayoría de los emuladores no emulan el bus principal del sistema ; por lo tanto, cada dispositivo de E/S suele tratarse 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 puede adaptarse a las características del dispositivo emulado; sin embargo, los diseños basados en una API de E/S estándar y unificada pueden competir con estos modelos más simples, si están bien diseñados, y tienen la ventaja adicional de proporcionar automáticamente un servicio de conexión mediante el cual se pueden usar dispositivos virtuales de terceros dentro del emulador. Una API de E/S unificada no necesariamente refleja la estructura del bus de hardware real: el diseño del bus está limitado por varias restricciones eléctricas y la necesidad de una gestión de concurrencia de hardware que en una implementación de software puede ignorarse en gran medida.
Incluso en los emuladores que tratan cada dispositivo como un caso especial, suele haber una infraestructura básica común para:
- gestionar las 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 las interrupciones (virtuales)".
- escribir y leer desde la memoria física, mediante dos procedimientos similares a los que se utilizan con la memoria lógica (aunque, a diferencia de esta última, el primero a menudo se puede omitir y, en su lugar, emplear referencias directas a la matriz de memoria).
Aplicaciones
En conservación

La emulación es una estrategia para la preservación digital y la lucha contra la obsolescencia . Se centra en recrear el entorno informático original, lo cual puede ser laborioso y difícil, pero valioso por su capacidad de mantener una conexión más cercana con la autenticidad del objeto digital, el sistema operativo o incluso la plataforma de juegos. [ 10 ] La emulación aborda el entorno de hardware y software original del objeto digital y lo recrea en una máquina actual. [ 11 ] El emulador permite al usuario acceder 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. [ 12 ] Jeffery Rothenberg, uno de los primeros defensores de la emulación como estrategia de preservación digital , afirma: «El enfoque ideal proporcionaría una solución única , extensible y a largo plazo que se pueda diseñar de una vez por todas y aplicar de forma uniforme, automática y en sincronía organizada (por ejemplo, en cada ciclo de actualización) a todo tipo de documentos y medios». [ 13 ] Además, afirma que esto no solo debería aplicarse a sistemas obsoletos, sino también ser adaptable a futuros sistemas desconocidos. [ 14 ] En la práctica, cuando se lanza una nueva versión de una aplicación, en lugar de abordar los problemas de compatibilidad y migración de cada objeto digital creado en la versión anterior de dicha aplicación , se podría crear un emulador para la aplicación , permitiendo el acceso a todos esos objetos digitales.
En el arte de los nuevos medios
Debido a su uso predominante 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 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 haya dependencia de hardware que envejece y se vuelve obsoleto. La paradoja es que la emulación y el emulador deben ser compatibles con las computadoras del futuro. [ 15 ]
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. Facilitan el proceso de desarrollo al permitir detectar, recrear y corregir fallos en el diseño incluso antes de que el sistema se construya. [ 16 ] Son particularmente útiles 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 que proporciona el hardware virtual. [ 17 ] Esto también permite que el desarrollo de software se lleve a cabo antes de que el hardware esté listo, [ 18 ] lo que ayuda a validar las decisiones de diseño y proporciona un mayor control.
Comparación con la simulación
La palabra "emulador" fue acuñada 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 utilizando instrucciones adicionales implementadas en microcódigo y hardware, en lugar de la simulación de software utilizando solo instrucciones estándar, para ejecutar programas escritos para computadoras IBM anteriores aumentó drásticamente 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 el 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 más tarde en el IBM 7090. Este programa utilizó las instrucciones agregadas por la característica de compatibilidad [ 23 ] para atrapar instrucciones que requerían un manejo especial; Todas las demás instrucciones 704 se ejecutaban igual en un 7090. La función de compatibilidad en el 1410 [ 24 ] solo requería configurar un interruptor de palanca de la 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 usar la palabra "emular" en el contexto del software. Sin embargo, antes de 1980, "emulación" se refería solo 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. [ 25 ] Por ejemplo, una computadora construida especialmente para ejecutar programas diseñados para otra arquitectura es un emulador. En cambio, un simulador podría ser un programa que se ejecuta en una PC, de modo que se puedan simular juegos antiguos de Atari en ella. Los puristas siguen 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 ámbitos 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 tanto práctica como semánticamente de la emulación de redes. [ 26 ]
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 las características físicas de una plataforma informática a los usuarios, presentando en su lugar una plataforma informática abstracta. [ 27 ] [ 28 ] En sus orígenes, el software que controlaba la virtualización se llamaba "programa de control", pero con el tiempo se prefirieron los términos " hipervisor " o "monitor de máquina virtual". [ 29 ] Cada hipervisor puede administrar o ejecutar múltiples máquinas virtuales .
Véase también
Referencias
- ↑ Warick, Mike (abril de 1988). "Emulación de MS-DOS para el 64" . Compute!. pág. 43. Consultado el 10 de noviembre de 2013 .
- ↑ La emulación de Linux se eliminó de OpenBSD en la versión 6.0 https://www.openbsd.org/60.html
- ↑ 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-3OCLC 433173319
{{cite book}}: CS1 mantenimiento: otros ( enlace ) - ↑ "La imitación de emulación" . Malwarebytes Labs . 17 de octubre de 2014. Consultado el 30 de mayo de 2016 .
- ↑ "Sony Computer Entertainment America v. Bleem, 214 F. 3d 1022" . Noveno Circuito, 2000. Google Académico . Tribunal de Apelaciones (publicado el 4 de mayo de 2000). 14 de febrero de 2000. Consultado el 15 de junio de 2016 .
- ↑ Véase Midway Manufacturing Co. v. Artic International, Inc. , 574 F.Supp. 999, confirmada, 704 F.2d 1009 (9th Cir 1982) (que sostiene que la ROM de Pac-Man es una fijación suficiente a efectos de la ley de derechos de autor, aunque el juego cambie cada vez que se juegue) y el artículo 2 del Convenio de Berna.
- ↑ nba-emu/NanoBoyAdvance , NanoBoyAdvance, 12 de marzo de 2025 , consultado el 13 de marzo de 2025
- ^ mgba-emu/mgba , mGBA , 13 de marzo de 2025 , consultado el 13 de marzo de 2025
- ↑ Sky (12 de marzo de 2025), skylersaleh/SkyEmu , consultado el 13 de marzo de 2025
- ↑ «¿Qué es la emulación?» . Biblioteca Koninklijke . Archivado desde el original el 13 de septiembre de 2015 . 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.
- ↑ Muira, Gregory. "Ampliando los límites de la política de 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". Evitando las arenas movedizas tecnológicas: encontrar una base técnica viable para la preservación digital . Consejo de Recursos Bibliotecarios y de Información . Washington, DC . Consultado el 8 de marzo de 2008 .
- ↑ Rothenberg, Jeffrey. «La solución de la emulación». Evitando las arenas movedizas tecnológicas: Encontrar una base técnica viable para la preservación digital. Washington, DC: Consejo de Recursos Bibliotecarios y de Información, 1998. Consejo de Recursos Bibliotecarios y de Información. 2008. 28 de marzo de 2008. https://www.clir.org/pubs/reports/rothenberg/contents.html
- ↑ "Ecos del arte: la emulación como estrategia de preservación" . Archivado del original el 27 de octubre de 2007. Consultado el 11 de diciembre de 2007 .
- ↑ Peter Magnusson (2004). "Simulación de sistema completo: el eslabón perdido del desarrollo de software" . Archivado del original el 7 de octubre de 2012. Consultado el 22 de abril de 2012 .
- ↑ "Depuración y simulación completa del sistema" .
- ↑ Vania Joloboff (2009). "Simulación de sistema completo de sistemas embebidos" (PDF) . Archivado del original (PDF) el 9 de febrero de 2014. Consultado el 22 de abril de 2012 .
- ↑ Pugh, Emerson W. (1995). Building IBM: Shaping an Industry and Its Technology . MIT. p. 274. ISBN 0-262-16147-8.
- ↑ Pugh, Emerson W.; et al. (1991). Los sistemas 360 y los primeros 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. Archivado del original el 13 de marzo de 2005.
- ↑ "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 del IBM 1410 (PDF) . Marzo de 1962. págs. 56–57 , 98–100 . A22-0526-3.
- ↑ Tucker, S. G (1965). "Emulación de grandes sistemas" . Communications of the ACM . 8 (12): 753– 61. doi : 10.1145/365691.365931 . S2CID 15375675 .
- ↑ "¿Simulación o emulación de redes?" . Network World . 22 de septiembre de 2017 . Consultado el 22 de septiembre de 2017 .
- ↑ Turban, E; King, D.; Lee, J.; Viehland, D. (2008). "19". Comercio electrónico: una perspectiva gerencial (PDF) (5.ª ed.). Prentice-Hall. p. 27. Archivado del original (PDF) el 21 de mayo de 2009. Recuperado el 13 de diciembre de 2021 .
- ↑ "Virtualización en la educación" (PDF) . IBM . Octubre de 2007. Consultado el 6 de julio de 2010 .
- ↑ Creasy, RJ (1981). "El origen del sistema de tiempo compartido VM/370" (PDF) . IBM . Consultado el 26 de febrero de 2013 .
Enlaces externos
- Software de emulación
- Hardware informático
- Terminología de emulación