DragonFly BSD
DragonFly BSD (англ. Dragonfly — стрекоза) — операционная система с открытым кодом[3][4][5], созданная в июле 2003 года на базе FreeBSD (4-й ветки), ориентирована на платформу x86. Один из разработчиков FreeBSD — Мэтт Диллон[6] с группой товарищей — будучи неудовлетворенным оптимизацией ядра FreeBSD, основал новую операционную систему DragonFlyBSD как систему, предназначенную для работы на высоконагруженных серверах, и более эффективно использующую ресурсы процессора и оперативной памяти, прежде всего на многопроцессорных системах[7][8].
DragonFly BSD | |
---|---|
Разработчик | Matthew Dillon и сообщество |
Основана на | FreeBSD[1] |
Первый выпуск | 12 июля 2004 |
Последняя версия | 6.0[2] (10 мая 2021 года) |
Менеджеры пакетов | Порты FreeBSD |
Поддерживаемые платформы | x86_64 |
Тип ядра | Гибридное ядро |
Интерфейс | интерфейс командной строки |
Лицензия | BSD |
Состояние | Актуальное |
Репозиторий исходного кода | gitweb.dragonflybsd.org/… |
Веб-сайт | dragonflybsd.org |
Медиафайлы на Викискладе |
Молодая, но быстро развивающаяся и совершенствующаяся система. Может использоваться как на сервере, так и на рабочей станции, может быть установлена как с GUI (вариант с GUI включает много дополнительных программ, таких как веб-браузер и т. п.), так и с поддержкой только командной строки.
DragonFly BSD рекомендуется к использованию только опытным пользователям[3][6][9][10].
В настоящее время ОС стабильно работает в том числе и под длительной серьёзной нагрузкой. Имеются небольшие шероховатости с отдельными портированными приложениями.
Дистрибутив создан с использованием BSD Installer.
Основные отличительные особенности
Основные отличия DragonFlyBSD от родительской операционной системы FreeBSD таковы:
- Используются облегчённые нити ядра (LWKT — Light Weight Kernel Threads)[11]. Этот механизм является намного лучшей средой для симметричной многопроцессорности «по сравнению с традиционной моделью процесса, которую используют другие BSD, и по сравнению с мьютекс-ориентированной моделью, которую использует FreeBSD-5. Это одна из главных причин, почему мы сделали проект DragonFly. Облегчённые нити обеспечивает чрезвычайно эффективную и масштабируемую среду программирования для систем UP и SMP. FreeBSD-5 в значительной степени отказалась от повышения производительности».[12] «Он проще в использовании и менее подвержен ошибкам. Абстракция токенов часто упрощает код по сравнению с моделью мьютексов, используемой FreeBSD 5 и NetBSD. Сама обработка потока тоже очень аккуратна, потому что она не пытается быть умной, но проста. Нет причудливого механизма вытеснения, кроме хорошо известной мягкой обработки прерываний, нет пинг-понга потоков ядра между процессорами. Это важно для производительности и делает систему более детерминированной»[12].
- В отличие от в значительной степени монолитной FreeBSD, где ядро и драйверы представляют собой единое целое, в DragonFlyBSD, наподобие микроядерных операционных систем, максимум функций ядра вынесено из пространства памяти ядра в пользовательское пространство. Тем самым достигается как рост производительности, так и надёжность системы в целом. Но при этом DragonFlyBSD не является микроядерной операционной системой, ибо функциональность ядра высока.
- Традиционные для Unix системные вызовы только эмулируются в целях совместимости. Вместо них используется механизм сообщений (messages) и их очередей, т. н. портов (ports), подобный применяющемуся в микроядре Mach.
- Особо устойчивая и надёжная файловая система HAMMER2[5][13].
История
Мэтт Диллон, был ранее известен как автор компилятора DICE C для AmigaOS, а также значительным вкладом в подсистему виртуальной памяти в проекте FreeBSD, где он использовал параллелизм[12]. Это в сочетании с тем, что доступ Диллона к репозиторию исходного кода FreeBSD был отозван из-за ссоры с другими разработчиками FreeBSD, не желающих брать на себя работу, стало причиной создания проекта DragonFly BSD в 2003 году, с реализацией модели симметричной многопроцессорности с использованием облегчённых потоков ядра[14] [15]. Проект DragonFly также привел к разработке нового метода виртуализации ядра в пользовательском пространстве в 2006 году, названного виртуальным ядром[14][16], когда код ядра может быть скомпилирован для запуска в пользовательском пространстве, первоначально, для облегчения отладки различных будущих компонентов уровня ядра[17].
На первом крупном этапе проекта, который продолжался до начала 2007 года, проект DragonFly был сосредоточен на переписывании большинства основных подсистем ядра для реализации необходимых абстракций и поддержки разработки параллельных программ для вычислительных кластеров и сетей. Это потребовало большой работы практически во всех подсистемах, особенно в API-интерфейсах файловой системы и ядра.
Диллон построил в ядре DragonFly механизмы обмена сообщениями, которые похожи на модель обмена сообщениями AmigaOS, но он «перестал пытаться использовать обмен сообщениями для взаимодействия драйверов устройств, файловой системы и системных вызовов» [18].
Проект Dragonfly также привел к созданию новой файловой системы, получившей название HAMMER (англ. молот), которую Диллон создал с использованием B-деревьев; HAMMER была объявлена готовой к выпуску в DragonFly 2.2 в 2009 году[16]; и, впоследствии, 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-битной архитектуры.
- Кроме сборок релизных версий дистрибутива распространяются также ежедневные снимки файловой системы, включающие все актуальные изменения[19].
Примечания
- http://grok.su/DragonFly/share/misc/bsd-family-tree
- DragonFly 6.0 is out!
- Евгений Зобнин. Тур по BSD, часть 4. DragonFly, гибридное ядро и HAMMER . xakep.ru (27 мая 2016). Дата обращения: 31 декабря 2021.
- DragonFly BSD 2.6: towards a free clustering operating system [LWN.net]
- Релиз операционной системы DragonFly BSD 5.8 . Яндекс.Дзен (4 марта 2020). Дата обращения: 31 декабря 2021.
- DragonflyBSD — «стрекоза с рожками» . itc.ua (12 июля 2004). Дата обращения: 31 декабря 2021.
- http://www.lemis.com/~grog/SMPng/USENIX/paper.pdf
- New DragonFly Released For BSD Users - InternetNews.
- DistroWatch Weekly, Issue 133, 9 January 2006
- A Quick Review of DragonFly BSD
- Interview with Matthew Dillon of DragonFly BSD
- Federico Biancuzzi. Behind DragonFly BSD . O'Reilly Media (8 июля 2004). Дата обращения: 2 марта 2019.
- DistroWatch Weekly, Issue 764, 21 May 2018
- David Chisnall. DragonFly BSD: UNIX for Clusters? . InformIT. Prentice Hall Professional (15 июня 2007). Дата обращения: 6 марта 2019.
- 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."»
- Koen Vervloesem. DragonFly BSD 2.6: towards a free clustering operating system . LWN.net (21 апреля 2010). Дата обращения: 7 марта 2019.
- Jeremy C. Reed: Answers from Matt Dillon about DragonFly's virtual kernel . BSD Newsletter .com. Reed Media .net (10 февраля 2007). Дата обращения: 17 ноября 2019. Архивировано 24 февраля 2007 года.
- DragonFly BSD: UNIX for Clusters? | Not a Microkernel | InformIT
- Daily snapshots
Ссылки
- dragonflybsd.org (англ.)
- DragonFly Wiki (англ.)