В материале говорим о возможностях этого открытого инструмента и его технических параметрах. Также расскажем об аналогичных проектах, разрабатываемых в этой сфере.

В предыдущих сериях:



Фото — Faris Mohammed — Unsplash

Что это за инструмент


Jor1k представляет собой эмулятор микропроцессора, построенного на базе микроархитектуры OpenRISC 1000. Это — 32 разрядный чип, который открытое сообщество разрабатывает под лицензией LGPL. Устройство использовали в НАСА для создания наноспутника TechEdSat.

Эмулятор написан на JavaScript и работает из браузера. Jor1k увидел свет в 2013 году и с тех пор поддерживается автором. Им выступил Себастьян Макке (Sebastian Macke). Ему помогали несколько коллег по цеху, среди которых значится Жерар Браад (Gerard Braad), ведущий инженер-программист из Red Hat. Авторы проекта говорят, что запустили его для демонстрации возможностей JavaScript.

Инструмент можно использовать как образовательную платформу в университетах. Он также подходит на роль бенчмарка для тестирования JS-движков и может стать альтернативным способом портировать старое ПО на современные системы. Есть мнение, что jor1k сможет выступить в роли узла для TAILS-системы, исключив необходимость выделять отдельную машину.

Что он умеет


В качестве демо есть несколько системных образов — их список представлен в подразделе Demos на GitHub. Большая часть построена на Linux 3.16, позволяет работать с графикой X.Org и Wayland/Weston плюс запускать различные приложения. Например, в jor1k есть два встроенных бенчмарка — nbench и coremark. Первый разработали в 90-х годах специалисты из ныне закрытого журнала о микрокомпьютерах BYTE. nbench позволяет оценить производительность памяти, а также CPU и FPU. Что касается coremark, то это свод бенчмарков для процессора во встраиваемых системах. Среди заданий для тестов есть: обработка связных списков и матриц плюс подсчет суммы CRC.

Также в jor1k можно воспроизвести несколько видеороликов и поиграть в компьютерные игры. Среди них есть Monkey Island, Doom и Frontier Elite II. В частности, Monkey Island запускается с помощью утилиты ScummVM, разработанной специально для загрузки игр студии LucasArts.

Хотя стоит отметить, что производительность игр оставляет желать лучшего — курсор реагирует на движения мыши достаточно медленно, плюс присутствует задержка после клика.



Картинка выводится при помощи эмулируемого фреймбуфера с разрешением 640x400 и поддержкой сенсорного экрана LPC32xx. Данные система хранит на виртуальном ATA-диске в 64 килобайта и обрабатывает их 32 мегабайтами оперативной памяти. Ввод организован с помощью драйвера виртуальной клавиатуры. В jor1k встроен ethernet-контроллер, позволяющий выходить в интернет из сэмулированной в браузере среды. Один из резидентов Hacker News в тематическом треде отмечает, что в этом случае разработчики перенаправляют все запросы через собственный сервер.

Эмулятор поддерживает многопоточную работу с двумя, четырьмя, восемью и шестнадцатью ядрами. Каждая версия эмулятора загружается по отдельной ссылке — их можно найти в подразделе Demos официального репозитория. Отметим, что при увеличении числа ядер система начинает работать нестабильно — в будущем разработчики планируют решить эту проблему. При этом пользователи с Hacker News отмечают, что эмулятор функционирует быстрее в Firefox, чем в других браузерах. Такое поведение системы связано с более качественной оптимизацией под его JIT-компилятор.

Другие эмуляторы


В рамках проекта JSLinux также разработан эмулятор на JavaScript для 32-разрядного CPU (x86). Его автором выступил французский математик Фабрис Беллар (Fabrice Bellard), который написал библиотеку для декодирования аудио и видеофайлов libavcodec.

Эмулятор построен на основе динамического транслятора из проекта QEMU. Система также задействует типизированные JavaScript-массивы, увеличивающие производительность и уменьшающие потребление памяти при работе с данными фиксированного размера.


Фото — Ivy Barn — Unsplash

Над Linux-эмулятором на JavaScript трудились и инженеры из RISC-V Foundation. Их система называлась riscv-angel и позволяла запустить riscv-linux с набором утилит BusyBox.

Можно с уверенностью сказать, что если подобные решения продолжать совершенствоваться, они могут стать новым витком в развитии терминальных технологий и облачных решений. Особенно актуальными системы вроде jor1k будут для крупных компаний. Так, их сотрудники смогут получать доступ к удаленным рабочим столам с помощью обычного браузера.


Мы в 1cloud.ru предлагаем услуги по аренде виртуальной инфраструктуры. На сайте работает калькулятор, который поможет оценить ориентировочную стоимость ресурсов.

На дополнительные вопросы готовы ответить специалисты нашего центра компетенции — им можно позвонить или написать на почту.


Что еще у нас есть на Хабре:

Комментарии (3)


  1. AquiHostStrider
    01.01.2020 23:02

    А зачем эмулировать железо в браузере? Разве не было идеи написать поддержку псевдо-архитектуры для gcc, чтобы при компиляции вместо ассемблера генерировался браузерный JS? А потом под это дело собрать Cooperative Linux.


  1. troosh
    13.01.2020 16:58

    Железо эмулируют, чтобы разрабатывать под него софт пока это железо не готово или недоступно массам. В браузере это частый случай.

    Linux уже портирован на более чем два десятка архитектур (это про активыне сейчас), лучше взять одну из них готовых, чем добавлять ещё одну псевдо-архитектуру.

    Больше будет пользователей OpenRISC, даже в эмуляторе, — больше шансов что в ядре не выпилят поддержку этой архитектуры (такое такое случается с архитектурами про которые народ начинает забывать).


    1. AquiHostStrider
      24.01.2020 20:27

      Железо эмулируют, чтобы разрабатывать под него софт пока это железо не готово или недоступно массам.
      Только причём здесь браузер?
      В браузере это частый случай.
      Частый? Это вообще первая статья, где эмулируется Linux и вторая, где эмулируется железо в браузере(первая была про Windows95 на electron.js).
      лучше взять одну из них готовых, чем добавлять ещё одну псевдо-архитектуру.
      Угу, лучше. 4 слоя абстракции — мало (OS/hal, API, GUI, JS-интерпретатор), надо 5. А лучше 10, не?
      в ядре не выпилят поддержку этой архитектуры
      Из ядра выпиливают поддержку железки не когда не остаётся активных пользователей, а когда уходят разработчики/мейнтейнеры, которые тестируют собираемость и работоспособность новых ядер с данной железкой.
      случается с архитектурами про которые народ начинает забывать
      В gcc, llvm и binutils сохраняется поддержка многих ярхитектур, про которые в ядре давно «забыли».