В материале говорим о возможностях этого открытого инструмента и его технических параметрах. Также расскажем об аналогичных проектах, разрабатываемых в этой сфере.
В предыдущих сериях:
Фото — 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.
Хотя стоит отметить, что производительность игр оставляет желать лучшего — курсор реагирует на движения мыши достаточно медленно, плюс присутствует задержка после клика.
Картинка выводится при помощи эмулируемого фреймбуфера с разрешением 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 предлагаем услуги по аренде виртуальной инфраструктуры. На сайте работает калькулятор, который поможет оценить ориентировочную стоимость ресурсов.
На дополнительные вопросы готовы ответить специалисты нашего центра компетенции — им можно позвонить или написать на почту.
Что еще у нас есть на Хабре:
В предыдущих сериях:
- «Смеха ради»: для чего могут понадобиться программные инструменты, у которых нет «боевого» применения
- Разобраться в политиках конфиденциальности приложений и сервисов — помогут нейросети
Фото — 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)
troosh
13.01.2020 16:58Железо эмулируют, чтобы разрабатывать под него софт пока это железо не готово или недоступно массам. В браузере это частый случай.
Linux уже портирован на более чем два десятка архитектур (это про активыне сейчас), лучше взять одну из них готовых, чем добавлять ещё одну псевдо-архитектуру.
Больше будет пользователей OpenRISC, даже в эмуляторе, — больше шансов что в ядре не выпилят поддержку этой архитектуры (такое такое случается с архитектурами про которые народ начинает забывать).AquiHostStrider
24.01.2020 20:27Железо эмулируют, чтобы разрабатывать под него софт пока это железо не готово или недоступно массам.
Только причём здесь браузер?В браузере это частый случай.
Частый? Это вообще первая статья, где эмулируется Linux и вторая, где эмулируется железо в браузере(первая была про Windows95 на electron.js).лучше взять одну из них готовых, чем добавлять ещё одну псевдо-архитектуру.
Угу, лучше. 4 слоя абстракции — мало (OS/hal, API, GUI, JS-интерпретатор), надо 5. А лучше 10, не?в ядре не выпилят поддержку этой архитектуры
Из ядра выпиливают поддержку железки не когда не остаётся активных пользователей, а когда уходят разработчики/мейнтейнеры, которые тестируют собираемость и работоспособность новых ядер с данной железкой.случается с архитектурами про которые народ начинает забывать
В gcc, llvm и binutils сохраняется поддержка многих ярхитектур, про которые в ядре давно «забыли».
AquiHostStrider
А зачем эмулировать железо в браузере? Разве не было идеи написать поддержку псевдо-архитектуры для gcc, чтобы при компиляции вместо ассемблера генерировался браузерный JS? А потом под это дело собрать Cooperative Linux.