Архитектура Haiku OS
Максим Сохацкий, Киев, Украина, maxim.sokhatsky@gmail.com
Операционная система Haiku – это открытая реимплементация операционной системы BeOS производства Be, Inc. Haiku выпускается под лицензиней MIT. Haiku, как и BeOS, находится в классе любительских Geek операционных систем а также может быть использована в embedded-секторе и в сегменте нетбуков. Она основана на ядре NewOS бывшего инженера Be, Inc Тревиса Гейсельбрехта и полностью совместима с приложениями своего оригинала BeOS R5. Разработчики оригинальной системы признают, что реимплементация Haiku намного лучше и современней, чем ее оринал. Это в первую очередь касается транзакционной файловой системы BFS, которая используется также в других Geek операционных системах – SkyOS и Syllable. Много разработчиков собралось вокруг Haiku и из лагеря Amiga.
История
BeOS была системой, опередившей свое время. Это была ровесница NeXT 3.0 и Windows NT 3.1. Основатель компании Be, Inc – Жан Луи Гассье, бывшей руководитель отделения Apple во Франции, решил создать мультимедийную систему. Впоследствии сотрудники и активы Be перешли в Palm, и развитие операционной системы BeOS прекратилось. Однако энтузиасты в 2001 году решили полностью повторить эту операционную систему.
Бывший сотрудник Be написал ядро, а другие участники проекта слой за слоем сделали полную замену всем уровням операционной системы. Сейчас Haiku находится в стадии альфа-тестирования. Уже почти 10 лет от состояния “ничего” до того, что будет показано в нынешней презентации.
Ядро
API ядра очень сильно по простоте напоминает TRON (ядро ОС реального времени). Есть всего 5 объектов операционной системы: потоки, процессы, семафоры, области виртуальной памяти, порты сообщений. Но несмотря на свою простоту, API достаточно мощное для того, чтобы реализовать POSIX. Линкуется API ядра как С библиотеки, хотя многое внутри ядра написано на С++, включая изящную кроссплатформенную систему виртуальной памяти. Прочитать про API ядра можно здесь: http://www.haiku-os.org/legacy-docs/bebook/TheKernelKit_Overview_Introduction.html
Be API
Be API как интерфейс прикладного уровня является не менее мощным средством, чем Win32 и NeXT; он спроектирован примерно в тоже время, что и NeXT Framework. Но в отличии от С API Win32 и ObjectiveC-линковки Cocoa, библиотеки линкуются как с++ библиотеки со всеми вытекающими последствиями: простотой разработки, , привязкой к ABI компилятора gcc, ненужностью дополнительных прослоек (поскольку все и так удобно, в отличие, например, от архаичного Win32 API). Именно объектность API BeOS стала причиной распространения двух версий gcc с Haiku и возможности запускать исполняемый код, скомпилированный несовместимыми версиями gcc.
В Haiku используется ELF формат.
http://www.haiku-os.org/legacy-docs/bebook/TheApplicationKit_Overview_Introduction.html
Как уже упоминалось, Haiku полностью бинарно совместима с приложениями BeOS R5.
Сравнение с Unix
Для людей из мира юникс в Haiku будет уютно: есть bash, binutils, fileutils, куча библиотек out of the box. Многое постепенно портируется (например, некоторые привычные для мира BSD и Linux прикладные пакеты, включая KOffice), а что соответствует идеологии ОС – включается в дистрибутив. Однако приоритет отдается BSD-подобным лицензиям, совместимым с коммерческим использованием. Поскольку Haiku поддерживает приложения своего оригинала – BeOS R5, и должна иметь возможность запускать и разрабатывать приложения с gcc2, есть две версии gcc: 2.9.5 и 4.3.3.
Следом за своим прототипом, Haiku OS может похвастаться высокой производительностью. Так, будучи запущена на на Zotac Ion-A with Atom 330 dual core, Haiku позволяет проигрывать 7 видеороликов MPEG-4 (704×396px) одновременно. Для сравнения, Linux на этом железе проигрывает только 3 таких ролика.
Двадцать шесть приложений, входящих в альфа-версию операционной системы, запускаются за 10 секунд в виртуальной машине. Система загружается за 15 секунд.
Среди других особенностей операционной системы необходимо упомянуть следующие:
- простота, чистота, отсутствие унаследованного кода
- изящность, красота, быстрота
- системный дизайн (архитектура микроядра и обслуживающих серверов)
- массовое использование объектов синхронизации на всех уровнях системы
- кроссплатформенность (ARM, PowerPC, x86_64)
- совместимость с BeOS R5 (не учить новое, и есть унаследованная база приложений)
- Практически полная совместимость с POSIX
- браузер, основанный на WebKit
- поддержка UNICODE на всех уровнях (IMB ICU идет в комплекте с системой)
- поддержка японского языка «из коробки»
- Gallium3D, а в будущем должны работать DRI-драйвера для Linux
- могут работать сетевые драйвера от FreeBSD 8
- системе полностью хватает 100 МБ памяти
- достаточно современная журнальная транзакционная файловая система
- механизм Query – аналог Windows Search, Spotlight или Beagle
- огромный педагогический потенциал
- перспективы как в секторе embedded или на нетбуках, так и в качестве Geek OS
Материалы тезисов распространяются под лицензией Creative Commons Attribution-Noncommercial 3.0 Unported License (http://creativecommons.org/licenses/by-nc/3.0/).