Один из разработчиков NetBSD провёл (http://blog.netbsd.org/tnf/entry/kernel_drivers_compiled_to_...) интересный эксперимент, в полной мере продемонстрировавший гибкость средств портирования NetBSD под новые платформы. Используя Emscripten (http://www.opennet.me/opennews/art.shtml?num=31155), в представление на языке JavaScript было скомпилировано изначально написанное на языке Си ядро NetBSD и набор связанных с ним драйверов. Таким образом была добавлена поддержка новой архитектуры "sys/arch/javascript", подразумевающей возможность запуска ядра NetBSD под управлением web-браузера.
В отличие от проекта JSLinux (http://www.opennet.me/opennews/art.shtml?num=30577), в рамках которого написан полноценный эмулятор ПК, способный загрузить Linux, порт NetBSD имеет определённую практическую направленность. Целью разработки является обеспечение компиляции в JavaScript отдельных драйверов NetBSD с возможностью обращения к их функциям из JavaScript-приложений. Например, можно создать web-сервис, способный напрямую работать с образами файловых систем, используя скомпилированные в JavaScript драйверы NetBSD.
Для демонстрации озвученной идеи подготовлен рабочий прототип подобного web-сервиса, способный работать с системными образами в формате FFS. Выполняемый в браузере демонстрационный образ ядра NetBSD с поддержкой FFS, Tmpfs и kernfs, а также минимальное системное окружение NetBSD можно загрузить на данной странице (http://ftp.netbsd.org/pub/NetBSD/misc/pooka/rump.js/) (5 Мб). Прототип сервиса может быть выполнен в любом современном web-браузере, за исключением Internet Explorer. Сервис позволяет передавать запущенному в браузере ядру произвольные команды и просматривать результат их выполнения. При запуске демонстрации осуществляется загрузка образа файловой системы FFS (rump.data), запуск ядра NetBSD и монтирование FFS-раздела, после чего можно выполнить произвольные команды в интерактивном режиме.
Ядро собрано в режиме RUMP (http://www.netbsd.org/docs/rump/) (Runnable Userspace Meta Program), позволяющем организовать выполнение частей ядра в адресном пространстве пользователя. В частности, Rump позволяет в виде оформленного в стиле микроядра серверного процесса выполнять в пространстве пользователя драйверы, изначально работающие на уровне монолитного ядра системы. По сути rump-ядро является частично паравиртуализированным ядром, запускаемым поверх высокоуровневного гипервизора. Указанная возможность позволяет легко портировать NetBSD под различные системы, так как по сути для обеспечения работы rump-ядра достаточно подготовить для платформы только соответствующий небольшой гипервизор. В рассмотренном эксперименте rump-гипервизор был написан для браузерного JavaScript движка (гипервизор был написан на Си на базе стандартного POSIX-гипервизора), после чего гипервизор, ядро и компоненты NetBSD были преобразованы в JavaScript в автоматическом режиме при помощи компилятора Emscripten.URL: http://blog.netbsd.org/tnf/entry/kernel_drivers_compiled_to_...
Новость: http://www.opennet.me/opennews/art.shtml?num=35268
Вот уж реальные извращенцы
А видел работающий 8-битный процессор с памятью и монохромным монитором, смоделированный в Minecraft?
А еще был 8-битный процессор (AtMega) с запущенной на нем убунтой, которую ты так нежно любишь своим фругуртом :)
А что такое «фругурт»?
> А что такое «фругурт»?Это то что у некоторых возникает при упоминании некоторых кейвордов как условный рефлекс. Политкорректная версия названия :)
У меня для Вас плохие новости: http://ru.wikipedia.org/wiki/%D0%91%D1%8...
На аьмеге убунту запускали? Как?
Годно!
> 8-битный процессор с памятью и монохромным монитором, смоделированный в MinecraftГде, где его можно посмотреть?
...и ту пришёл поручик Ржевский и заявил: "А давайте запустим wine на Dart!"
А что я считаю тем же USB драйверам для всяких "свистков" не место в ядре и они должны быть максимально переносимыми между разными ОС...
> А что я считаю тем же USB драйверам для всяких "свистков" не
> место в ядре и они должны быть максимально переносимыми между разными ОС...Считайте. И пишите наздоровье так как считаете нужным, флаг вам в руки и барабан на шею.
спасибо) а еще надо формат USB драйверов (каком нибудь python/lua) протащить как ietf стандард.
> спасибо) а еще надо формат USB драйверов (каком нибудь python/lua) протащить как ietf стандард.Протаскивайте. Я правда пользоваться этим буллшитом не буду, пусть оно хоть трижды стандарт.
Не только к свисткам. Драйвера ко всему должны быть в USER-space...
Это может и правильно, но получается медленнее чем в ядре.
>но получается медленнее чем в ядре.Достойно скапитанил.
сумничаю: а почему не реализовать сразу "пакетные операции"...
В 96 мы с Линусом завалились по пьяни к Ванге. Так она нам пророчила: в 2012 появится некий Анонимчег! Он сделает драйвера в юзерспейсе с пакетным режимом! Так что вы двое пока так не делайте...
> В 96 мы с Линусом завалились по пьяни к Ванге.Да, забористая была трава ;)))
> Не только к свисткам. Драйвера ко всему должны быть в USER-space...Ну раз вам должны - попробуйте стребовать долги через суд. Правда боюсь что придется предоставить какие-то доказательства того что вам кто-то что-то задолжал.
Однако, новые горизонты открываются. Мне кажется, это можно применить в распределённых вычислениях, ну или в ботнетах :)
Будущее уже сейчас. Ваш браузер заражен ботнетом...))
Прототип сервиса может быть выполнен в любом современном web-браузере, за исключением Internet Explorer.Наличие слов современном и web-браузере уже как бы намекает, что про IE тут речи не ведётся.
A IE10? :)
туда же)))
"IE10 - теперь скачивание Firefox (Chrome) стало еще удобнее!"
Ну осталось только поверх это NetBSD запустить Xen, в котором уже, например, запустить Linux или даже Windows... :)
> Ну осталось только поверх это NetBSD запустить Xen, в котором уже, например,
> запустить Linux или даже Windows... :)В котором запустить еще какой нибудь виртуализатор, в котором... wait, oh sh--!
А в нём запустить браузер с транслированными в JS... ))
"...в доме, который построил Джек."
> прототип подобного web-сервиса... с которого можно будет загрузить образ NetBSD, работающей в браузере
(чтобы понять рекурсию, надо сначала понять рекурсию)
Ох уж этот финн, Анти... Не сидится всё ему на месте. То rump, то теперь это...