DragonFly BSD

Эта статья находится на начальном уровне проработки, в одной из её версий выборочно используется текст из источника, распространяемого под свободной лицензией
Материал из энциклопедии Руниверсалис
(перенаправлено с «DragonFlyBSD»)
DragonFly BSD
Загрузчик DragonFly BSD 6.2.1Загрузчик DragonFly BSD 6.2.1
Разработчик Мэтью Дилон и сообщество
Семейство ОС BSD UNIX
Основана на FreeBSD
Исходный код Открытое ПО
Первый выпуск 12 июля 2004
Последняя версия 6.4.0 (30 декабря 2022)
Метод обновления сборка портов или установка пакетов
Менеджеры пакетов Pkgcore, Pkgsrc
Поддерживаемые платформы x86_64
Тип ядра Гибридное ядро
Лицензия BSD
Состояние активное
Репозиторий исходного кода gitweb.dragonflybsd.org
Веб-сайт dragonflybsd.org

DragonFly BSD (англ. Dragonfly — стрекоза) — операционная система с открытым кодом[1][2][3], созданная в июле 2003 года на базе FreeBSD (4-й ветки), ориентирована на платформу x86. Один из разработчиков FreeBSD — Мэтт Диллон[англ.][4] с группой товарищей — будучи неудовлетворенным оптимизацией ядра FreeBSD, основал новую операционную систему DragonFlyBSD как систему, предназначенную для работы на высоконагруженных серверах, и более эффективно использующую ресурсы процессора и оперативной памяти, прежде всего на многопроцессорных системах[5][6].

Молодая, но быстро развивающаяся и совершенствующаяся система. Может использоваться как на сервере, так и на рабочей станции, может быть установлена как с GUI (вариант с GUI включает много дополнительных программ, таких как веб-браузер и т. п.), так и с поддержкой только командной строки.

DragonFly BSD рекомендуется к использованию только опытным пользователям[1][4][7][8].

В настоящее время ОС стабильно работает в том числе и под длительной серьёзной нагрузкой. Имеются небольшие шероховатости с отдельными портированными приложениями.

Дистрибутив создан с использованием BSD Installer.

Основные отличительные особенности

Основные отличия DragonFlyBSD от родительской операционной системы FreeBSD таковы:

  • Используются облегчённые нити ядра (LWKT — Light Weight Kernel Threads[англ.])[9]. Этот механизм является намного лучшей средой для симметричной многопроцессорности «по сравнению с традиционной моделью процесса, которую используют другие BSD, и по сравнению с мьютекс-ориентированной моделью, которую использует FreeBSD-5. Это одна из главных причин, почему мы сделали проект DragonFly. Облегчённые нити обеспечивает чрезвычайно эффективную и масштабируемую среду программирования для систем UP и SMP. FreeBSD-5 в значительной степени отказалась от повышения производительности».[10] «Он проще в использовании и менее подвержен ошибкам. Абстракция токенов часто упрощает код по сравнению с моделью мьютексов, используемой FreeBSD 5 и NetBSD. Сама обработка потока тоже очень аккуратна, потому что она не пытается быть умной, но проста. Нет причудливого механизма вытеснения, кроме хорошо известной мягкой обработки прерываний, нет пинг-понга потоков ядра между процессорами. Это важно для производительности и делает систему более детерминированной»[10].
  • В отличие от в значительной степени монолитной FreeBSD, где ядро и драйверы представляют собой единое целое, в DragonFlyBSD, наподобие микроядерных операционных систем, максимум функций ядра вынесено из пространства памяти ядра в пользовательское пространство. Тем самым достигается как рост производительности, так и надёжность системы в целом. Но при этом DragonFlyBSD не является микроядерной операционной системой, ибо функциональность ядра высока.
  • Традиционные для Unix системные вызовы только эмулируются в целях совместимости. Вместо них используется механизм сообщений (messages) и их очередей, т. н. портов (ports), подобный применяющемуся в микроядре Mach.

История

Мэтт Диллон[англ.], был ранее известен как автор компилятора DICE C для AmigaOS, а также значительным вкладом в подсистему виртуальной памяти в проекте FreeBSD, где он использовал параллелизм[10]. Это в сочетании с тем, что доступ Диллона к репозиторию исходного кода FreeBSD был отозван из-за ссоры с другими разработчиками FreeBSD, не желающих брать на себя работу, стало причиной создания проекта DragonFly BSD в 2003 году, с реализацией модели симметричной многопроцессорности с использованием облегчённых потоков ядра[12] [13]. Проект DragonFly также привел к разработке нового метода виртуализации ядра в пользовательском пространстве в 2006 году, названного виртуальным ядром[англ.][12][14], когда код ядра может быть скомпилирован для запуска в пользовательском пространстве, первоначально, для облегчения отладки различных будущих компонентов уровня ядра[15].

На первом крупном этапе проекта, который продолжался до начала 2007 года, проект DragonFly был сосредоточен на переписывании большинства основных подсистем ядра для реализации необходимых абстракций и поддержки разработки параллельных программ для вычислительных кластеров и сетей. Это потребовало большой работы практически во всех подсистемах, особенно в API-интерфейсах файловой системы и ядра.

Диллон построил в ядре DragonFly механизмы обмена сообщениями, которые похожи на модель обмена сообщениями AmigaOS, но он «перестал пытаться использовать обмен сообщениями для взаимодействия драйверов устройств, файловой системы и системных вызовов» [16].

Проект Dragonfly также привел к созданию новой файловой системы, получившей название HAMMER (англ. молот), которую Диллон создал с использованием B-деревьев; HAMMER была объявлена готовой к выпуску в DragonFly 2.2 в 2009 году[14]; и, впоследствии, HAMMER2, объявленная стабильной в 2018 году в DragonFly 5.2. Эта файловая система была разработана для решения многочисленных проблем и добавления многих новых возможностей к DragonFly, не только таких как снимок файловой системы, но и мгновенное восстановление после сбоев и почти зеркальное отображение в реальном времени. Файловая система HAMMER также предназначена служить основой для кластеризации и других следующих по плану работ.

В конце 2011 года система основные подсистемы ядра стали использовать симметричную многопроцессорность, а в 2013-2014 годах также был повышен параллелизм за счет подсистем PID, PGRP и SESSION, а также системных вызовов fork/exec/exit/wait, реализован механизм подкачки страниц на многопроцессорных системах, что значительно повысило производительность операционной системы.

В 2012 году Francois Tigeot и специальная группа помощников начали переоснащение DRM с активным портом от Linux, продвигая DragonFly к современным стандартам. В 2015 году выполнена полностью ускоренная поддержка 2D, 3D, а видео работает с сервером Xorg. Примерно в то же время были также предприняты согласованные усилия по обновлению звуковой системы с основным портом HDA от FreeBSD.

Дистрибутивы

  • Дистрибутив существует в 2 вариантах: для записи на компакт-диск (файл с расширением iso) либо на flash-носитель (файл с расширением img). Дистрибутив может использоваться как для работы без установки (LiveCD), так и для установки на жесткий диск.
  • Начиная с версии 3.8 предоставляются образы только для 64-битной архитектуры.
  • Кроме сборок релизных версий дистрибутива распространяются также ежедневные снимки файловой системы, включающие все актуальные изменения[17].

См. также

Примечания

  1. Перейти обратно: 1,0 1,1 Евгений Зобнин. Тур по BSD, часть 4. DragonFly, гибридное ядро и HAMMER. xakep.ru (27 мая 2016). Дата обращения: 31 декабря 2021. Архивировано 29 апреля 2022 года.
  2. DragonFly BSD 2.6: towards a free clustering operating system [LWN.net]. Дата обращения: 23 июня 2018. Архивировано 23 июня 2018 года.
  3. Перейти обратно: 3,0 3,1 Релиз операционной системы DragonFly BSD 5.8. Яндекс.Дзен (4 марта 2020). Дата обращения: 31 декабря 2021. Архивировано 12 апреля 2021 года.
  4. Перейти обратно: 4,0 4,1 DragonflyBSD — «стрекоза с рожками». itc.ua (12 июля 2004). Дата обращения: 31 декабря 2021. Архивировано 31 декабря 2021 года.
  5. Архивированная копия. Дата обращения: 3 июля 2018. Архивировано 5 июня 2014 года.
  6. New DragonFly Released For BSD Users - InternetNews.. Дата обращения: 3 июля 2018. Архивировано 5 июня 2014 года.
  7. DistroWatch Weekly, Issue 133, 9 January 2006. Дата обращения: 23 июня 2018. Архивировано 23 июня 2018 года.
  8. A Quick Review of DragonFly BSD. Дата обращения: 23 июня 2018. Архивировано 23 июня 2018 года.
  9. Interview with Matthew Dillon of DragonFly BSD. Дата обращения: 3 июля 2018. Архивировано 3 июля 2018 года.
  10. Перейти обратно: 10,0 10,1 10,2 Federico Biancuzzi. Behind DragonFly BSD. O'Reilly Media (8 июля 2004). Дата обращения: 2 марта 2019.
  11. DistroWatch Weekly, Issue 764, 21 May 2018. Дата обращения: 23 июня 2018. Архивировано 23 июня 2018 года.
  12. Перейти обратно: 12,0 12,1 David Chisnall. DragonFly BSD: UNIX for Clusters?. InformIT. Prentice Hall Professional (15 июня 2007). Дата обращения: 6 марта 2019. Архивировано 15 ноября 2019 года.
  13. David Chisnall. Why Go? // The Go Programming Language Phrasebook. — 1st. — Addison-Wesley Professional. — С. 5. — ISBN 978-0-321-81714-3.. — «"In creating DragonFly BSD, Matt Dillon observed that there was no point in creating an N:M threading model—where N userspace threads are multiplexed on top of M kernel threads—because C code that uses more than a handful of threads is very rare."»
  14. Перейти обратно: 14,0 14,1 Koen Vervloesem. DragonFly BSD 2.6: towards a free clustering operating system. LWN.net (21 апреля 2010). Дата обращения: 7 марта 2019. Архивировано 23 июня 2018 года.
  15. Jeremy C. Reed: Answers from Matt Dillon about DragonFly's virtual kernel. BSD Newsletter .com. Reed Media .net (10 февраля 2007). Дата обращения: 17 ноября 2019. Архивировано 24 февраля 2007 года.
  16. DragonFly BSD: UNIX for Clusters? | Not a Microkernel | InformIT. Дата обращения: 3 июля 2018. Архивировано 5 июня 2014 года.
  17. Daily snapshots. Дата обращения: 20 апреля 2016. Архивировано 25 июня 2017 года.

Ссылки