Planeta Red
  • Inicio
  • Dispositivos
  • Noticias
  • Reviews
  • Manuales
  • Aplicaciones
Sin resultados
Ver todos los resultados
Planeta Red
Sin resultados
Ver todos los resultados
Planeta Red

Emulador JavaScript de Linux en navegador

Por redactor
25/11/2017
en Linux
0
Emulador JavaScript de Linux en navegador

javascript linux emulator

Fabrice Bellard ha presentado un programa escrito en JavaScript que emula un procesador con arquitectura x86, lo suficiente rápido como para para ejecutar Linux en un navegador web. Fabrice Bellard, por si no te es familiar el nombre, es el fundador de FFmpeg, el creador del compilador Tiny C y el responsable del proyecto QEMU.

JavaScript PC emulador no funciona en todos los navegadores, únicamente en Google Chrome versión 11 (en la Beta 12 no funciona) y en Firefox 4. Es independiente del sistema operativo, según su creador, y se ejecuta sin problemas en Windows, GNU/Linux y Mac. La captura de pantalla que encabeza este artículo la he realizado en Firefox 4 sobre Windows 7 Professional de 64 bits. Arranca sin problemas y es muy rápido.

 

JavaScript PC Emulator

JavaScript PC Emulator puede simular el funcionamiento de un chip Intel 486 de la década de los 90, pero no tiene incorporada una unidad de coma flotante en la transformación numérica, aunque afortunadamente, dice Bellard, en Linux se puede emular eso. La versión del núcleo es 2.6.20.

Lo hice por diversión, sólo porque los nuevos motores de JavaScript son lo suficientemente rápidos como para hacer cosas complicadas

El código de JavaScript PC emulador está escrito en puro Javascript utilizando las W3C Typed Arrays que están disponibles en algunos navegadores modernos. El hardware emulado es el siguiente:

  • CPU compatible con arquitectura x86 de 32 bits
  • Controlador de interrupciones 8259
  • Temporizador de interrupción 8254
  • UART 16450
  • Reloj en tiempo real

Emulación de la CPU

La CPU simulada es prácticamente un 486 ×86 compatible sin la unidad de coma flotante (FPU). La falta de FPU no es un problema cuando se ejecuta Linux como sistema operativo, ya que contiene un emulador de FPU.

Parte del código está inspirado en mi traductor dinámico x86 presente en QEMU, pero hay diferencias importantes porque aquí se trata de un intérprete

Con el fin de ser capaz de ejecutar Linux, se ha implementado una MMU (Memory Management Unit, unidad de gestión de memoria). La emulación no es completa, hay una serie de restricciones.

Además de la falta de FPU, no dispone de instrucciones MMX, ni modo real, entre otras restricciones demasiado técnicas para el ámbito de este artículo. No obstante, si estás interesado en conocer todos los detalles, en el enlace que dejo al final, puedes consultar estos aspectos.

La mayoría de estas restricciones son fáciles de quitar, pero me decidí a aplicar el mínimo indispensable para poder utilizar un kernel reciente de Linux y sus aplicaciones para el usuario

Dispositivos

No hay sincronización entre la frecuencia de PIT (Programmable Interval Timer) y el tiempo real, así que hay un sesgo entre el tiempo devuelto por Linux y el tiempo real. Para ver esto, prueba el comando “date” y apreciarás esa diferencia.

La UART (puerto serie) no admite el modo FIFO. Tal vez podría ayudar a mejorar la velocidad de visualización. No dispone de emulación de red en esta fase del desarrollo.

Lo que sí cuenta es con un dispositivo “portapapeles” para permitir el intercambio entre el emulador y el exterior. Puedes verlo en /dev/clipboard en el emulador. En el interfaz que aparece en la captura de pantalla, hay un botón para limpiar el portapapeles.

Terminal Javascript

Comenta Fabrice Bellard en la explicación sobre los detalles técnicos del emulador, que no ha utilizado la librería Javascript “termlib.js”, (genera un interfaz de terminal para servicios Web).

A pesar de que podría haber reutilizado la excelente (librería) termlib, me decidí a escribir la mía propia porque tenía curiosidad por ver cómo se podía hacer

Leer algo así, dicho con esa sencillez, no debería sorprendernos del hombre que en 2009 estableció el record de cálculo de decimales del número Pi (2,7 billones de dígitos), con una máquina de potencia similar a la que estoy empleando para este artículo.

Después de leer la frase me ha venido a la mente otra casi tan demoledora: “dichosos los tiempos en que los hombres escribían sus propios controladores“, (Linus Torvalds). Estos caballeros deben tener el ADN algo diferente…

Versión del kernel

Bellard ha empleado la versión 2.6.20 del núcleo. La imagen de disco es sólo una imagen RAM que se carga en el arranque. El sistema de archivos se ha generado con BuildRoot que contiene BusyBox (paquete que combina utilidades estándar de Unix en un solo ejecutable).

La “distribución” integra dos herramientas escritas por Bellard: Tiny C y el clon de Emacs, QEmacs, aún sin terminar, aunque funcional.

Javascript

Fabrice Bellard está muy interesado en la actualidad en la implementación de motores Javascript, hasta el punto de plantearse escribir uno y ha hecho este desarrollo como un ejercicio para aprender a escribir código optimizado para los últimos motores Javascript, en particular Jaeger Monkey (Firefox 4) y V8 (Chrome).

Utilidad de JavaScript PC Emulator

Con carácter general y para un usuario normal, JavaScript PC Emulator no deja de ser una curiosidad que demuestra dónde están los límites actuales de la tecnología vinculada a la Web.

Para el estudiante, la oportunidad de bucear en el código de uno de los programadores más relevantes del entorno código abierto y las capacidades de un lenguaje que no hace mucho algunos daban por muerto: Javascript.

Para Bellard, JavaScript PC Emulator sirve para:

  • Evaluar y comparar los motores Javascript. ¿Cuánto tiempo tarda el motor Javascript en arrancar Linux?
  • Aprender a utilizar herramientas de línea de comandos de Unix sin salir del navegador.
  • Procesamiento del lado del cliente utilizando librerías x86, por ejemplo, para propósitos criptográficos.
  • Emplear Una versión más avanzada que permite utilizar software antiguo PC DOS, como juegos.

Web | JavaScript PC Emulator

Etiquetas: AplicacionesChromeFirefoxFirefox 4Linuxnavegadoressistema operativotecnología
Artículo anterios

Juegos clásicos en iPhone (1ª parte)

Siguiente artículo

Fallo en la red, el drama de PlayStation

redactor

Según la Wikipedia la redacción es la sección dentro de la estructura organizativa de un periódico que se responsabiliza de la redacción de sus artículos, bajo la supervisión del redactor jefe que coordina el equipo de redactores.

Siguiente artículo
Fallo en la red, el drama de PlayStation

Fallo en la red, el drama de PlayStation

Motorola Milestone 3, imágenes y algunos datos

Motorola Milestone 3, imágenes y algunos datos

Dock unlocker, para bloquear Iconos del dock

Dock unlocker, bloquea los íconos del dock en Mac OS X y Windows

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

TOPANÁLISIS/REVIEW

NZXT Kraken X63 RGB

NZXT Kraken X63 RGB

El NZXT Kraken X63 RGB es un enfriador líquido de PC €144.95
[Análisis-Review] ASUS Vivobook 13 Slate OLED: Una Tablet para creativos, con pantalla Full HD de 13,3″ y procesador Pentium Silver 2021. Incluye lápiz  activo ASUS Pen 2.0 y teclado QWERTY.

ASUS Vivobook 13 Slate OLED

La nueva Tablet ASUS VivoBook 13 Slate OLED, con pantalla de €660
Sistema de audio de gran fideliad

Studio Monitor 4 Hi Fi

El nuevo Studio Monitor 4 Hi Fi es un sistema de €171
[Análisis-Review] Adidas ZNE 01 ANC: Auriculares inalámbricos con ANC, Bluetooth 5.2, protección IPX5 y un sonido excepcional

Adidas ZNE 01 ANC

Los Adidas ZNE 01 ANC son auriculares inalámbricos con cancelación activa €189
Auriculares Jabra Elite 7 Pro

Jabra Elite 7 Pro

Conoce a los nuevos Jabra Elite 7 Pro, unos auriculares inalámbricos €159.99

TE INTERESA

Nuevo OUKITEL WP18 (2022) Móvil Resistente, 12500mAh, 5.93” HD+ Smartphone Libres, 4GB + 32GB (Ampliable 1TB) Android 11 Móvil Teléfono Robusto, 13MP + 5MP, IP68/IP69K, Dual SIM, Face ID/OTG/GPS - Negro
OUKITEL WP18 (2022) Móvil Resistente, 12500mAh, 5.93” HD+ Smartphone Libres, 4GB + 32GB (Ampliable 1TB) Android 11 Móvil Teléfono Robusto, 13MP + 5MP, IP68/IP69K, Dual SIM, Face ID/OTG/GPS - Negro
159,99 EUR
Comprar en Amazon
Nuevo Xiaomi 12 Pro Smartphone 6,73 pulgadas AMOLED 120 Hz pantalla desbloqueada Teléfono Móvil Android 12, cámara triple de 50 MP, procesador Snapdragon 8 Gen 1, Dual SIM, 5G, NFC (gris, 8 + 256 GB)
Xiaomi 12 Pro Smartphone 6,73 pulgadas AMOLED 120 Hz pantalla desbloqueada Teléfono Móvil Android 12, cámara triple de 50 MP, procesador Snapdragon 8 Gen 1, Dual SIM, 5G, NFC (gris, 8 + 256 GB)
999,00 EUR
Comprar en Amazon
Nuevo Xiaomi Smartphone Redmi Note 11 Pro, cámara Principal de 108 MP, Pantalla FHD+ AMOLED de 6,67', frecuencia de actualización de 120 HZ, Cargador rápido de 67 W, 6+128 GB Gris Grafito [versión Global]
Xiaomi Smartphone Redmi Note 11 Pro, cámara Principal de 108 MP, Pantalla FHD+ AMOLED de 6,67", frecuencia de actualización de 120 HZ, Cargador rápido de 67 W, 6+128 GB Gris Grafito [versión Global]
306,64 EUR
Comprar en Amazon

Artículos Recientes

Auriculares de la marca Energy Sistem

Energy Sistem amplía su catálogo de productos con nuevos altavoces, teclados, ratones y alfombrillas para gamers

15/05/2022
Tarjeta PNY XLR8

Conoce la nueva tarjeta de memoria flash microSD de la serie XLR8 de PNY que ofrece una velocidad de vídeo V30 y un rendimiento de aplicación A2

14/05/2022
  • Quienes somos
  • Publicidad
  • Política de Privacidad
  • Aviso Legal
  • Contacto

Sin resultados
Ver todos los resultados
  • Inicio
  • Dispositivos
  • Noticias
  • Reviews
  • Manuales
  • Aplicaciones

Este sitio web utiliza cookies. Al continuar usando este sitio web, usted está dando su consentimiento para que se usen cookies. Visite nuestra Política de Privacidad y Cookies.