Haiku

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 17:05, 24 августа 2017.
Haiku
Haiku-logo.png
Разработчики: Haiku Inc.
Выпущена: 2002
Предыдущий выпуск: R1 Alpha 4.1 / 14 ноября 2012
Состояние разработки: Альфа
Написана на: C++
Операционная система: BeOS
Локализация: русский, английский и др.
Тип ПО: Операционная система
Лицензия: MIT License
Веб-сайт https://www.haiku-os.org/

Haiku — свободная операционная система для персональных компьютеров, которая нацелена на двоичную совместимость с операционной системой BeOS. Haiku воплощает в себе основные идеи BeOS. Это модульная система, архитектурно решённая как гибридное ядро: микроядерная архитектура, способная динамически подгружать необходимые модули. В настоящее время международная группа разработчиков активно трудится над компонентами системы.

История

С закрытием разработки операционной системы BeOS и продажей всей её интеллектуальной собственности фирме Palm перед энтузиастами BeOS встала задача дальнейшего развития и существования этой операционной системы вообще. Поскольку система была во многом уникальной и передовой, её сторонники решили, дабы избежать юридических и технических проблем, переписать операционную систему BeOS с нуля, полностью под свободной лицензией, обеспечив максимально возможную двоичную совместимость с последней версией BeOS — 5.0.

Проект был основан в 2002 году Майклом Фипсом. Целью было полностью воссоздать последний официальный релиз BeOS R5.

Изначально проект назывался OpenBeOS (сокращенно OBOS), но позже, во избежание нарушения прав на торговую марку компании Palm, путем голосования было решено переименовать проект в Haiku.

В 2003 году была создана некоммерческая организация Haiku Inc., занимающаяся организационной частью проекта. Она контролирует развитие проекта, принимает пожертвования, а также обладает правами на торговую марку Haiku, логотип, веб-сайт и исходный код. В конце марта 2005 года в Haiku было запущено первое самостоятельное графическое приложение. К этому моменту Haiku уже не использовала код или бинарные файлы, которые бы принадлежали BeOS, другими словами - она уже стала самостоятельной системой, включая сетевой стек и драйверы. В 2007 году Майкл Фипс заявил, что вынужден покинуть проект по семейным обстоятельствам, и бразды правления Haiku Inc. перешли в другие руки. Во главе стали: Аксель Дёрфлер в качестве президента, Бруно Альбукерке (Bruno G. Albuquerque) в качестве вице-президента компании , казначеем был назначен Райан Ливенгуд (Ryan Leavengood), секретарем - Матью Мадиа (Matthew Madia), пятым членом совета директоров стал Юриас Маккалоу (Urias McCullough). В октябре 2007 года был готов к тестированию драйвер AHCI SATA. В 2008 году Haiku достигла self-hosting’а, то есть систему можно было собрать из исходных кодов прямо в самой же Haiku. Это событие стало знаковым, так как теперь Haiku не зависела от других систем. Также в этом году была добавлена поддержка Bluetooth.

Об авторе

Райн Ливенгуд (Ryan Leavengood) — компьютерный консультант в Boynton Beach, Fla., занимающаяся разработкой сайтов на Ruby on Rails. Впервые он был вовлечен в проект с открытым кодом для разработки Haiku в 2003 году, и теперь он хранитель их сокровищ. Ни одна ОС не идеальна, замечает он, но «некоторые совсем неидеальны. Я понял, что каждая ОС, над которой я работал, была не хуже, чем то, что я уже использовал». Когда Ливенгуд не программирует, он с женой Франческой (Francesca) проводят время со своими четырьмя кошками, одним сенбернаром и садом из местных растений Флориды.

Техническая реализация

Haiku воплощает в себе основные идеи BeOS. Это модульная система, архитектурно решённая как гибридное ядро[3]: микроядерная архитектура, способная динамически подгружать необходимые модули. Сетевой стек работает в режиме ядра, но в целях двоичной совместимости с BeOS R5 имеет также интерфейс в пользовательской области памяти.

Одной из отличительных особенностей системы является архитектура трансляторов — системных интерпретаторов файловых форматов (например, JPEG). Кроме того, Haiku продолжает традиции BeOS по активному использованию файловых мета-атрибутов, что позволяет реализовать работу с данными простыми и очевидными методами (см. OpenTracker).

Работа с Haiku

Во многом эффективность и скорость Haiku есть прямой результат наследия BeOS. BeOS была спроектирована изначально для максимального использования потоков, которые в компьютерных терминах представляют собой последовательности исполняемого кода. Как ткань состоит из множества нитей (threads) сплетённых вместе, так и операционная система сделана из потоков (threads), которые делят время процессора. Обычно выделяют по потоку на каждое приложение, плюс один на пользовательский интерфейс операционной системы. Для системы быть многопоточной значит, что Haiku может хорошо использовать множество процессоров либо CPU ядер, которые распространены повсеместно. Ядро Haiku позволяет каждому потоку работать на своём собственном ядре или процессоре, включая потоки внутри одного приложения. Добавление потоков к другим задачам, таким как получение данных из сети, также просто. Другие операционные системы прибегают к использованию многих ядер только когда выполняют много приложений одновременно, или когда какое-либо приложение имеет специальный многопоточный код, реализованный для него. Но этот многопоточный код сложен, так что большая часть приложений не могут им похвастаться.

Многопоточность

Haiku упрощает процесс написания многопоточного кода путём сокрытия большей части взаимодействия между потоками, так что разработчикам не нужно думать об этом. Во многом это возможно благодаря обширному использованию механизма сообщений. Скажем, Поток А и Поток Б в одном приложении оба хотят получить кусок данных от Потока В. Вместо того, чтобы прямо обратиться к этим данным, Потоки А и Б посылают по сообщению, которые помещаются в центральную очередь сообщений и обрабатываются в определённом порядке. Без этого механизма два потока попытались бы доступиться к Потоку В одновременно и зашли бы в тупик (deadlock), в результате чего они ждали бы друг друга вечно. В Haiku сообщения могут быть посланы как внутри приложения, так и другим приложениям. Таким образом, механизм сообщений Haiku берёт на себя всю сложность управления потоками, освобождая от этого разработчика.

Главная причина, по которой BeOS использовал множество потоков, была тем, что BeBox был задуман как медиа-платформа. Фактически одним из рекламных имён BeOS было "медиа-ОС". Хотя реклама слегка преукрашала достоинства, система действительно хорошо справлялась с мультимедиа. В типичной демонстрации BeBox играл полдюжины разных видео-роликов одновременно без задержек и пропуска кадров, в то время как система оставалась отзывчивой. Эффективность системы также позволяла обрабатывать аудио сигнал с низкой задержкой. В то время как Haiku всё ещё предстоит много работы в этих областях, она уже далеко впереди многих других систем.

Использование валовой системы

Обширное использование файловой системы типа базы данных, которая позволяет любому файлу иметь различные свойства привязанные к нему. Эти свойства могут быть проиндексированы и получены так же, как и в обычной базе данных. К примеру, каждое электронное сообщение (e-mail) в Haiku хранится вместе со свойствами, такими как: тема, имя отправителя с адресом, имя получателя с адресом. Из программы управления файлами, известной как Tracker, вы можете проводить поиск по любому из этих свойств. Свойства также позволяют вам извлекать информацию о песне из MP3 файлов, а также легко организовать и находить файлы в музыкальной библиотеке через Tracker. Записи в адресной книге Haiku, известные как People files, состоят практически полностью из таких свойств.

Позволить вашей ОС организовывать адресную книгу даёт преимущество: вы больше не привязаны к только одной программе, управляющей вашими письмами и контактами. Каждый, кто когда-либо пробовал извлекать старые письма из раздутого файла Microsoft Outlook, поймёт всю красоту данного подхода. Вместо того, чтобы скрывать корреспонденцию за форматом, доступным только из одной программы, Haiku позволяет использовать любую программу — вы даже можете использовать несколько программ для операций с одними и теми же письмами. Точно также People files в Haiku может редактироваться и управляться многими программами, можно даже изменять их из Tracker. Ни одна другая ОС не реализовала так удачно концепцию базы данных в своей файловой системе.

Недостатки

Haiku недостаёт некоторых ключевых моментов, которые ожидают пользователи. К примеру, большая часть современных ОС имеют аппаратно-ускоренные интерфейсы. Это позволяет отображать причудливые эффекты: тени от окон, прозрачные границы, эскизы содержимого окон — всё это быстро и эффективно, используя видео-карту. Пользователи популярных ОС также имеют доступ к широкому набору приложений. Haiku в настоящий момент ограничена всего несколькими родными приложениями, не считая того, что осталось от BeOS.

Как и другие открытые ОС, Haiku страдает от недостатка драйверов. Современные видео-карты, принтера, а также другие компоненты достаточно сложны: они как маленькие компьютеры сами по себе, и требуют для работы специальные программы — драйверы. Драйвер служит мостом между ОС и железом. Сегодня существует так много типов и марок железа, что разработчикам проектов с открытым кодом трудно за ними угнаться.

Разработка

Разработка операционной системы

Haiku разрабатывается преимущественно на языке программирования C++, с небольшим количеством кода на ассемблере. Существуют несколько команд разработчиков, занимающихся различными сферами:

  • App/Interface — разрабатывают интерфейс, приложения и Support Kits.
  • BFS — разрабатывают BeFS/OpenBFS
  • Game — разрабатывают Game Kit и его API.
  • Input Server — сервер, поддерживающий устройства ввода, такие как клавиатура и мышь и их взаимодействие с другими частями ОС.
  • Kernel — разрабатывают ядро ОС.
  • Media — аудио-сервер и связанный с ним API.
  • MIDI — реализуют MIDI-протокол.
  • Network — пишут драйвера для сетевых устройств и API, связанное с сетью.
  • OpenGL — разрабатывают поддержку OpenGL.
  • Preferences — воссоздают настройки BeOS.
  • Printing — работают над print-сервером и драйверами для устройств печати.
  • Screen Saver — реализуют функциональность скринсейвера.
  • Storage — разрабатываются сервер хранения и драйвера для требуемых файловых систем.
  • Translation — воссоздают модули для чтения\записи\конвертации разных форматов данных.

Разработка приложений

В качестве одной из целей проекта заявлена полная двоичная совместимость с BeOS 5, поэтому разработка приложений под Haiku может вестись средствами BeOS.

Разработчикам приложений прежде всего предоставляется объектно-ориентированный API на C++. Используемый компилятор — gcc.

В Haiku корректно работают приложения, скомпилированные разными бинарно несовместимыми между собой версиями gcc (2.95 и 4). Это достигнуто путём компиляции всех библиотек операционной системы, использующихся в приложениях, обеими версиями gcc. Затем, во время запуска приложения, операционная система Haiku определяет, с помощью какой версии gcc это приложение было скомпилировано, и выполняет динамическое связывание с версией системных библиотек, скомпилированных соответствующей версией компилятора.

Другие языки программирования, используя которые можно создавать приложения для Haiku:

  • C — с использованием компилятора gcc
  • Basic
  • Pascal — с использованием Free Pascal
  • Python — с использованием библиотеки PyHaiku (для построения графического интерфейса)
  • Perl
  • Ассемблер — с использованием NASM и Yasm
  • Fortran
  • Mono — в данный момент ведётся портирование. Позволит писать приложения на C#, C++, VB.NET.
  • Java
  • Ruby

Установка

Системные требования

  • 32-разрядный x86-процессор
  • 128 Мб оперативной памяти, (1 Гб для сборки Haiku внутри себя)
  • 700 Мб свободного места на жестком диске

Процесс установки через VirtualBox