Ядро и драйверы NetBSD скомпилированы в JavaScript для запуска в web-браузере

8 ноября 2012 года

Один из разработчиков NetBSD провёл интересный эксперимент, в полной мере продемонстрировавший гибкость средств портирования NetBSD под новые платформы. Используя Emscripten, в представление на языке JavaScript было скомпилировано изначально написанное на языке Си ядро NetBSD и набор связанных с ним драйверов. Таким образом была добавлена поддержка новой архитектуры "sys/arch/javascript", подразумевающей возможность запуска ядра NetBSD под управлением web-браузера.

В отличие от проекта JSLinux, в рамках которого написан полноценный эмулятор ПК, способный загрузить Linux, порт NetBSD имеет определённую практическую направленность. Целью разработки является обеспечение компиляции в JavaScript отдельных драйверов NetBSD с возможностью обращения к их функциям из JavaScript-приложений. Например, можно создать web-сервис, способный напрямую работать с образами файловых систем, используя скомпилированные в JavaScript драйверы NetBSD.

Для демонстрации озвученной идеи подготовлен рабочий прототип подобного web-сервиса, способный работать с системными образами в формате FFS. Выполняемый в браузере демонстрационный образ ядра NetBSD с поддержкой FFS, Tmpfs и kernfs, а также минимальное системное окружение NetBSD можно загрузить на данной странице (5 Мб). Прототип сервиса может быть выполнен в любом современном web-браузере, за исключением Internet Explorer. Сервис позволяет передавать запущенному в браузере ядру произвольные команды и просматривать результат их выполнения. При запуске демонстрации осуществляется загрузка образа файловой системы FFS (rump.data), запуск ядра NetBSD и монтирование FFS-раздела, после чего можно выполнить произвольные команды в интерактивном режиме.

Ядро собрано в режиме RUMP (Runnable Userspace Meta Program), позволяющем организовать выполнение частей ядра в адресном пространстве пользователя. В частности, Rump позволяет в виде оформленного в стиле микроядра серверного процесса выполнять в пространстве пользователя драйверы, изначально работающие на уровне монолитного ядра системы. По сути rump-ядро является частично паравиртуализированным ядром, запускаемым поверх высокоуровневного гипервизора. Указанная возможность позволяет легко портировать NetBSD под различные системы, так как по сути для обеспечения работы rump-ядра достаточно подготовить для платформы только соответствующий небольшой гипервизор. В рассмотренном эксперименте rump-гипервизор был написан для браузерного JavaScript движка (гипервизор был написан на Си на базе стандартного POSIX-гипервизора), после чего гипервизор, ядро и компоненты NetBSD были преобразованы в JavaScript в автоматическом режиме при помощи компилятора Emscripten.

Источники

править
 
 
Creative Commons
Эта статья содержит материалы из статьи «Ядро и драйверы NetBSD скомпилированы в JavaScript для запуска в web-браузере», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.