Опубликовано 16 ноября 2011 года
Мысль написать операционную систему целиком на ассемблере странна, но привлекательна. Её главные плюсы — исключительная производительность и малый объём исполняемого кода. Минусы тоже очевидны — сложность и жёсткая привязка к архитектуре компьютера. Тем не менее смельчаки всё же находятся.
Самый известный проект такого рода — это MenuetOS и её ответвление KolibriOS, разрабатываемое по большей части в России. История этих операционных систем не лишена интриг и разногласий, и на то есть причины: во-первых, проект свободный (лицензия — GNU GPL второй версии), то есть его участники трудятся не за прибыль, а за идею. Во-вторых, такие решения, как выбор процессорной архитектуры, в силу особенностей проекта имеют драматический характер. Группа разработчиков, решившая сменить платформу, обречена на практически полную переработку исходного кода.
По сравнению с другими операционными системами MenuetOS совсем молода. Она разрабатывается с 2000 года и успела стать известной в программистских кругах (читайте, к примеру, статью «Мал золотник, да дорог», написанную Яковом Уваровым для «Компьютерры» в 2005 году). KolibriOS ещё моложе — она отпочковалась от Menuet в 2004 году.
За это время разработчики успели написать около 7,5 Мбайт кода на чистом ассемблере. Примерно такой же размер имеют исходники Linux, написанные преимущественно на Си, и это только ядро, тогда как в дистрибутив KolibriOS входит графическая оболочка и небольшой набор прикладных программ (смеха ради отметим, что, по оценкам, основанным на знаменитой «утечке» 2004 года, код Microsoft Windows 2000 занимал около 1,5 Гбайт).
При этом «Колибри» — уже давно не «подтверждение концепции» и не игрушка, а вполне функциональная система, для которой пишут программы и которую действительно можно использовать для некоторого (пусть и не особенно широкого) круга серьёзных задач.
"Компьютерра" побеседовала с двумя разработчиками KolibriOS — Дмитрием Переверзевым и Игорем Солодухой.
- Что такое KolibriOS?
Переверзев: «Колибри» — это маленькая операционная система с богатыми возможностями. Можно сказать, это такой современный DOS.
- Как я понял, не просто маленькая, а вообще крошечная?
Переверзев: Ядро занимает около 80 Кб. То есть сопоставимо с размером MS-DOS последних версий. А возможностей гораздо больше.
- Какова история «Колибри»?
Переверзев: В 2001 году финский студент Вилле Турьянмаа написал свою операционную систему на ассемблере. В 2004 году он решил, что тридцатидвухбитные компьютеры погибли, и перешёл на разработку MenuetOS 64 шестидесятичетырёхразрядной версии своей операционной системы. Сообществу это не понравилось, и оно продолжило разработку тридцатидвухбитной версии своими силами. И когда более половины кода было изменено, проект получил название «Колибри» в честь одной из русских сборок систем.
- И кто этим занимался? Вы тогда уже тогда участвовали?
Переверзев: Я пришёл в проект позже где-то на год. Тогда этим занимался Марат Закиянов. Собирал дистрибутивы системы.
- Сейчас он тоже в команде?
Переверзев: Да, сейчас он в команде, разрабатывает ядро, файловый менеджер (свой клон Total Commander), файловые диалоги и просмотрщик графики — замечательный zSea.
- Каков сейчас статус разработки?
Переверзев: Cейчас мы ожидаем выхода новой версии, но с номером ещё не определились. Прошлая была 0.7.7.0, а эта будет не то 0.8, не то 0.9. Считается, что по сравнению с прошлой версией изменений очень много. Например, появится поддержка устройств USB. Около года прошло со времени последнего релиза.
- Какая вообще у вас команда? Сколько человек активно помогают?
Переверзев: Сейчас около десяти очень активных разработчиков и около тридцати разработчиков, которые время от времени появляются на форуме.
- А география какая? Разработчики в основном из России?
Переверзев: В основном СНГ, хотя есть и из Бельгии разработчики, русскоязычные из Англии. Я сам из Ставропольского края.
- Какие у «Колибри» особенности по сравнению с другими системами, в том числе по сравнению с другими минималистичными системами?
Переверзев: По сравнению с другими минималистичными системами «Колибри» самая минималистичная! К тому же из систем той же весовой категории «Колибри» самая функциональная. Например, есть неплохая система, Visopsys, она тоже компактная и умещается на дискету, но ничего не умеет.
- Какие главные отличия «Колибри» от «больших» операционных систем? Чего пока нет, и что из этого собираетесь добавить?
Переверзев: Поддержка интернета очень важна в современном мире. TCP/IP и драйверы сетевых карт в «Колибри» уже есть. Сейчас мы работаем над браузером, все участники так или иначе что-то делают для его появления. Пока что есть только текстовый, с ограниченной поддержкой графики. Ему, конечно, ещё далеко до совершенства.
Солодуха: Наличие браузера — это новые пользователи и популярность системы.
- Возможно, такая система вообще была бы популярна в качестве аналога Google ChromeOS — минимальная прослойка ОС плюс браузер. Как вы думаете?
Переверзев: Вполне возможно, тем более что минимальная реализация Flash у нас уже есть. Не совсем полноценная, зато на ассемблере.
- Какие ещё удачные применения вы видите?
Переверзев: Встраиваемые системы, системы сбора информации и управления производством, тонкие клиенты. К тому же «Колибри» может быть неплохой ОС для устаревших компьютеров.
Солодуха: Ещё системы, которые разрабатываются под своё «железо». Для них проектируют платы с нуля, для них сейчас пишется ветка «Колибри А».
- Какие у Колибри плюсы, кроме легковесности и быстродействия?
Солодуха: К примеру, «Колибри» можно загружать не только без диска, но и вообще без BIOS. Включаешь компьютер, и после теста оборудования сразу появляется «Колибри». В любом случае загрузка занимает три-четыре секунды после включения.
- Какие архитектуры сейчас поддерживаются?
Переверзев: Сейчас только процессоры x86, то есть начиная с 486 и до последних Core i7. Но только в тридцатидвухразрядном режиме.
- Шестидесятичетырёхразрядная версия существует, или она так и погибла?
Переверзев: MenuetOS 64 существует, но очень сильно отдалилась от своего предка.
- Её другая команда разрабатывает?
Переверзев: Её вообще разрабатывает один человек. Все тот же студент, но уже далеко не студент, наверное. У нас же сейчас есть эксперименты по запуску на многоядерных системах. Тридцатидвухбитное ядро системы запускается на тридцатидвухбитном ядре, а второе ядро процессора работает в шестидесятичетырёхбитном режиме. Вот так вот, по-хитрому.
Солодуха: Да, аппаратно такое возможно.
- У вас ведь ещё real-time-версия есть?
Переверзев: Она не совсем реального времени, но сам автор ветки говорит, что при некоторых изменениях, над которыми сейчас очень активно работают, «Колибри» можно использовать для встраиваемых систем, где важно гарантированное время отклика.
Солодуха: И сейчас уже очень малое время отклика. У нас на форуме можно посмотреть на результаты теста одной и той же программы, работающей напрямую с оборудованием, в Windows XP и в «Колибри». В «Колибри» выходит гораздо быстрее. Сейчас для реализации настоящей «риалтаймовости» нужно обеспечить гарантированное время отклика.
- Как у «Колибри» с поддержкой различных чипсетов (в том числе видео)?
Переверзев: VESA поддерживают все современные видеокарты, а ещё у нас есть порт линуксового драйвера ATI, и он поддерживает даже последние видеокарты ATI. Он, конечно, тяжеловат — 100 с лишним килобайт занимает, но позволяет использовать любые видеорежимы и даже аппаратное ускорение. К тому же регулярно обновляется.
- А из периферии что поддерживается?
Переверзев: С периферией тоже неплохо — есть поддержка USB, то есть клавиатуры и мышки работают.
- Что ещё планируется добавлять в обозримом будущем?
Переверзев: Трудно сказать, тут всё зависит от личного времени разработчиков.
Солодуха: Cейчас, например, на форуме появился человек, который вроде бы хотел реализовать Unicode, по крайней мере, поднимал такой вопрос.
- А сейчас какая кодировка?
Переверзев: Сейчас в системе де-факто 866, изменённая для поддержки русского, украинского, эстонского, латышского и ещё нескольких языков. Но в файловой системе используется Unicode, так что потихоньку переходим на него.
- Кстати, какие файловые системы поддерживаются?
Переверзев: FAT12, 16 и 32 — для записи и чтения, плюс ISO 9660 (это компакт-диски), и на чтение поддерживается NTFS, Ext2 и Ext3.
- Как в «Колибри» реализована многозадачность?
Переверзев: Можно создавать потоки, а вот процессов как таковых нет. Процесс — это множество потоков с общим адресом пространства.
- А защищённая память?
Солодуха: Есть стандартная для архитектуры x86 защита страниц.
- Межпроцессорное взаимодействие как-то реализовано?
Переверзев: Есть IPC и есть расшаренная память. То есть можно создать образ общей памяти и обмениваться данными между приложениями. Есть ещё общесистемный буфер обмена.
- Вы упомянули, что для «Колибри» существует около двухсот программ...
Переверзев: На самом деле их гораздо больше. Двести актуальных, которые хорошо работают.
- Что это за программы?
Переверзев: По статистике, больше всего игр — больше ста.
- Какие игры?
Солодуха: По большей части небольшие логические игры.
- Портированные с каких других систем?
Солодуха: Нет, это написанные для «Колибри».
Переверзев: На самом деле, написать игру гораздо проще, чем сделать что-то серьёзное вроде текстового или графического редактора. Поэтому программисты часто пробуют свои силы на небольших играх.
Солодуха: Есть аналоги игр с других систем — «сапёры», пасьянсы и так далее. Они написаны для «Колибри» с нуля. Но есть и полезные программы — несколько файловых менеджеров, включая клон Windows Explorer, клон Far Manager и Total Commander.
- Из известных игр что-нибудь портировали?
Переверзев: Есть Quake и Doom. Из эмуляторов есть DOSBox и эмулятор Nintendo. Кстати, в DOSBox можно запустить Windows 98 — я пробовал. Есть реализация языка Lua самой последней версии — 5.2. Есть рендер шрифтов Freetype и Mesa 3D — реализация библиотек OpenGL. Очень важная вещь: есть кодеки ffmpeg. Интересный факт: на несильной машине запускали двадцать-тридцать видеороликов одновременно, и загрузка процессора не превышала 50 процентов. В «Колибри» вообще оказалось довольно сложно загрузить процессор полностью.
- На чём в основном пишут программы?
Переверзев: На ассемблере.
- На высокоуровневых языках вообще не пишут?
Переверзев: Иногда пишут или портируют что-нибудь на Си или Паскале. Есть несколько программ на Lua.
Солодуха: Я ещё могу вспомнить, что кто-то из ребят пишет на таком языке, как Sphinx C--.
Переверзев: Кстати, это любопытный язык. Это такой Си, каким он мог бы когда-то быть. Когда-то давно Си был транслятором в ассемблер, а C-- им и остался, просто добавился синтаксический сахар в стиле языка Си. На нём написано много интересных программ.
- Я слышал, была реализация Python.
Солодуха: Есть tinypy, но программ на нём пока нет, и на нём не выйдет запустить произвольную программу на Python без изменений. Там нет некоторых важных особенностей языка — к примеру, генераторов и кортежей.
- Виртуальные машины есть? Не было ли идей, к примеру, портировать Java?
Переверзев: Сейчас ведутся разговоры о целесообразности этого. В принципе, технически это возможно. Вообще эталонную реализацию Sun я даже компилировал сам в «Колибри», но лицензия не позволяет её кому-нибудь показывать.
- Есть ли какие-нибудь идеи о коммерческом применении «Колибри»?
Солодуха: Мы сотрудничаем с израильской компанией Green Gadgets, которая выпускает компьютеры eBox и Edubook. Основной профиль компании — это маломощные гаджеты, которые могут работать даже от батареек. Например, eBox-3300, на котором мы показывали «Колибри», потребляет всего около 4,5 Ватт. У него нет ни жёсткого диска, ни вентиляторов, он совсем бесшумный.