Pull to refresh

Comments 8

Это очень круто.
Мне кажется, как раз режим
QEMU может эмулировать не только компьютер целиком, но и процессор для отдельного пользовательского процесса в хостовом ядре

и будет наиболее полезным для WebAssembly режима. Мне сложно вообразить необходимость запуска полноценной ОСи из браузера =) А вот отдельное приложение — может кому и пригодится.

Возможно. К счастью, TCG более-менее общий и там, и там. Правда, 64-битные гостевые системы у меня пока не поддерживаются.


С другой стороны, если от приложения есть исходники, то возможно, его проще будет пересобрать Emscripten-ом нативно. Да и как его в браузер запихивать, со всеми-то зависимостями… В общем, тут с ходу не скажешь. С ОС такого не получится. Хотя, если в дополнение к слою syscalls дописать в Emscripten слой hypercalls и тривиальное паравиртуализованное оборудование… :)

"тяп-ляп программирование" => exploratory programming.

Ну, когда-то у меня вообще возникло ощущение, что "хренак-хренак и в продакшн" + автотесты => GitHub Flow.

Не хватает пары слов о том, собственно, зачем все это. Мне как незнакомому с QEMU непонятно.

«Говорю же, чисто поржать» А если серьёзно — то изначально это было "на слабо" — написать JIT, который будет переделывать машинный код в JS (а QEMU в силу наличия режима не-аппаратной виртуализации для этого чудесно подходил). Ну а потом уже какие-то use case-ы начали вырисовываться.


Это виртуальная машина, работающая в браузере. Потенциально, более быстрая, чем аналоги, и уж вряд ли кто с нуля напишет для такого количества гостевых архитектур. В ней можно, например, демонстрировать однодискетные ОС прямо на сайте. Или прошивки для встраиваемых устройств.

Привет! Спасибо за классную статью. А ты смотрел, что Фабрис Беллард сам делает с QEMU? Имею в виду проект JS Linux: https://bellard.org/jslinux/

Смотря что понимать под "смотрел" :) Само существование JSLinux меня и сподвигло сделать "такое же, но с JIT". В первой части как раз был небольшой обзор существовавших ранее эмуляторов и известных мне попыток портировать QEMU.


Детально в JSLinux я не углублялся. Насколько я помню, там была задумка, наоборот, используя все возможности JS реализовать эффективный эмулятор практически с нуля. Я же не хотел разбираться со всеми деталями x86 (не говоря уже о десятке других архитектур), а сосредоточиться на JIT.

Sign up to leave a comment.

Articles