Драгонфлај БСД је јуниксолик слободан оперативни систем отвореног кода одвојен од Фри БСД-а 4.8. Метју Дилон, програмер Амиге крајем 1980-их и почетком 1990-их и програмер Фри БСД-а између 1994. и 2003. године, почео је да ради на Драгонфлај БСД-у у јуну 2003. и најавио га на дописним листама Фри БСД-а 16. јула 2003. године.[2]
Дилон је покренуо Драгонфлај у уверењу да ће технике усвојене за нитање и симетрично вишеструко обрађивање у Фри БСД-у 5[3] довести до лоших перформанси и проблема одржавања. Тражио је исправку ових очекиваних проблема у оквиру пројекта Фри БСД.[4] Због сукоба са другим програмерима Фри БСД-а због примене својих идеја,[5] његова способност да директно мења кодну базу је на крају опозвана. Упркос томе, пројекти Драгонфлај БСД-а и Фри БСД-а још увек раде заједно, деле исправке грешака, ажурирања управљачких програма и друга побољшања.
Намењен да буде логични наставак серије 4.x Фри БСД-а, Драгонфлај се значајно разликовао од Фри БСД-а, применом лаке нити језгра (ЛВКТ), система за прослеђивање порука у језгру и ХАМЕР систем датотека.[6] На многе концепте дизајна Драгонфлаја утицао је Амига ОС.[7]
Дизајн система
Језгро
ДрагонФлајево језгро је хибридно, садржи карактеристике и монолитног и микројезгра, као што могућност размене порука код микројезгра омогућава да велики део оперативног система бенефицира од заштићене меморије, као и задржавање брзине монолитних језгра приликом обављања неких критичних задатака. Подсистем порука је развијен на сличан начина као код микројезгара Мек-а, иако није толико сложен по дизајну. ДрагонФлај-ев подсистем порука има способност да се понаша и на синхрон и на асинхрон начин, и користећи ту могућност покушава да достигне најбоље могуће перформансе и било којој ситуацији.[8]
Према програмеру Метјуу Дилону, развој је био усресређен на омогућавање и излазних и улазних уређаја (И / О) и виртуелне фајл систем (ОСС) могућности за размену порука што ће представљати подсетник на циљеве пројекте које треба достићи. Нова инфраструктура ће омогућити да многи делови језгра буду саставни део корисничког простора; јер ће овде њихова поправка бити знатно лакша јер ће бити зназно мањи, изоловани програми, уместо да буду ситни делови уплетени у већем делу кода. Такође, померање одређеног дела кода језгра у кориснички простор ће допринети да систем буде знатно независнији; ако се кориснички простор поквари, то неће утицати на само језгро.[9]
Системски позиви су подељени на корисничку и кернел верзију и капсулирани су у порукама. То ће допринети смањењу величине и комплексности језгра померањем варијанти стандардног система у кориснички компатибилни простор, и помоћи да се сачува подударност и веза између верзија ДрагонФлаја . Линуксов и кодови других оперативних системиа налик Јуниксу су премештани на сличан начин.[7]
Извршавање
Како је подршка за архитектуре процесора почела да компликује подршку симетричног мултипроцесовања (SMP),[5] ДрагонФлај BSD је сада ограничио подршку на x86-64 платформу.[10] ДрагонФлај је у оригиналу користио x86 архитектуру, међутим од верзије 4.0 па на даље је више не подржава. Од верзије 1.10, ДрагонФлај подржава 1:1 кориснички навој (један навој језгра по једном навоју),[11] што се сматра релативно једноставним решењем које је такође и лако за спровођење.[7] Наслађен од FreeBSD-а, ДрагонФлај такође подржава мулти-навијање.[12]
У ДрагонФлај-у, сваки процесор има сопствени распоред навоја. Након настанка, навоји су припојени процесору и никада нису премештани са једног процесора на други; они се једино премештају ако се појави интер-процесорска прекидна (ИПИ) порука између тих процесора. Интер-процесорски распоред навоја се такође постиже и слањем асинхроних ИПИ порука. Предност ове једноставне подељености подсистема навоја је да кеш централних процесорских јединица у системима симетричних мулти-процесора не садржи дупликате података, што омогућава бољи рад давајући сваком процесору у систему могућност да користи сопствени кеш за складиштење различитих ствари на којима тренутно ради тај процесор.[7]
Подсистем лаких нити језгра је основан као део више нити језгра (на пример интернет коду постоји једна нит по протоколу по процесору), који смањује конкуренцију тако што брише потребу за дељењм одређених ресурса међу различитим задацима језгра.[5]
Заштита подељених ресурса
Како би се безбедно покретао на мулти-процесорским машинама, приступ подељеним ресурсима (као што су фајлови, структуре података) мора да буде серијализован тако да нити или процеси не покушавају да модификују исте ресурсе у исто време. Да би спречио вишеструке нити да прступају или модификују подељене ресурсе истовремено, ДрагоФлај је употребио критичну деоницу, и серијализоване токене како би спречио истовремени приступ. Док су и Линукс и FreeBSD 5 почели да користе мутекс моделе како би постигли боље перформансе на мулти-процесорским системима, ДрагоФлај није то урадио.[5] Донедавно, ДрагонФлај је користио spls, али су они замењени са критичним деоницама.
Већи део језгра система, укључујући ЛВКТ подсистем, подсистем ИПИ порука и нови и нови алокатор меморије језгра, нису закључани, што значи да раде без употребе мјутекс-а, са сваким процесом који ради на једном процесору. Критичне деонице се користе за заштиту од локалних прекида, појединачно за сваки процесор, и гарантују да нит која се сада извршава неће бити унапред испражњена.
[11]
Серијализовање токена је процес који се користи како би се спречио истовремени приступ других процесора и може да се извршава истовремено од стране вишеструких нити, али под условом да га једна нит ивршава у једном тренутку. Блокиране или успаване нити не спречавају остале нити од приступа подељеним ресурсима за разлику од нити које садрже мутекс. Поред других ствари, коришћење серијализовања токена спречава многе ситуације које би резултовале застојем или приоритетним заменама услед коришћења мутекса, као и огромно поједностављење дизајна и имплементације сложених процедура које би захтевале да ресурс буде подељен међу вишеструким нитима. Код серијализовања токена је напредовао у нешто веома слично Читај-копирај-ажурирај опцији која сада постоји на Линуксу. За разлику од тренутне РЦУ Линуксове имплементације, ДрагонФлај је импленетиран тако да само процесори који се такмиче за исте токене могу да буду погођени, уместо да се то деси свим процесорима у рачунару.[13]
ДрагонФлај се пребацио на мулти-процесорски сигурни плочасти алокатор, који не захтева ни мјутексе ни блокирање операција за задатке које обавља меморија.[14] Он је на крају прикључен стандардној C библиотеци, где је заменио FreeBSD-ову имплементацију.[15]
Виртуелно језгро
Након објављивања 1.8 верзије, ДрагонФлај има виртуализовани механизам сличан УМЛ-у,[16] који омогућава кориснику да покрене друго језгро у свом окружењу. Виртуално језгро (vkernel) се покреће у комплетно изолованој средини са емулираном мрежом и складишним интерфејсом, као и појеностављеним подстистеима за контролу језгра и карактеристикама груписања.[7][9]
Вјезгро има две битне разлике у односу на право језгро: недостаје му много рутина које се баве једноставним управљањима хардвера и користе функције Ц стандардне библиотеке (libc) на местима унутар-језграрних имплементација, где је то могуће. Пошто су и виртуално и реално језгро компајлирани из истог изворног кода, то значи да рутине које зависе од платформе и имплементације функција C библиотеке су јасно раздвојене у изворном стаблу.[17]
Виртуална платформа вјезгра ради на уграђеним апстракцијама високог нивоа омогућеним од реалног језгра. Ове апстракције укључују ккју-налик тајмер, конзолу (постављену на витуални терминал где се покреће вјезгро), слику диска и Етернет уређај за виртуално језгро (VKE), спајајући све пакете како би настао тап интерфејс.[18]
Пакетни менаџмент
Трећеразредни софтвер је доступан на ДрагонФлај-у као бинарни пакет pkgng
или преко основне колекције поротва-Дпортови .[19]
ДрагонФлај је првобитно користио колекцију FreeBSD портова као официјелни пакет за управљање системом, али почевши од верзије 1.4 се пребацио на NetBSD-ов pkgsrc систем, који се доживљавао као начин за смањење обима посла потребног за трећеразредни софтвер.[4][20] Коначно, одржавање компатибилности са pkgsrc
се показало да је узроковало много више напора него што је предвиђено, тако да је настао пројекат ДПортови, поврх колекције FreeBSD портова.[21][22]
КАРП подршка
Првобитна имплементација КАРП-а (Common Address Redundancy Protocol) је завршена у марту 2007. године.[23] А од 2011, КАРП подршка је спојена у ДрагонФлај BSD.[24]
ХАМЕР фајл систем
Порек Јуникс фајл система, који је био типични фајл систем на BSD-у, ДрагонФлај BSD подржава ХАМЕР фајл систем. Он је настао специфично за ДрагоФлај BSD како би обезбедио велики број нових карактеристика а и бољег је дизајна од популарног ЗФС-а.[7][9][25] ХАМЕР подржава конфигурациону историју фалј система, снепшот, чексаминг, не-дуплирање података и друге карактеристике типичне за овакав фајл систем.[16][26]
Следећу генерацију ХАМЕР фајл система (ХАМЕР 2) призводи Дилон.[27] ДрагонФлај BSD 3.8.0 је био први објављени фајл систем који подржава ХАМЕР 2, иако је декларисано да није још спреман за генералну употребу.[28]
Девфс (devfs)
У 2007. години ДрагонФлај BSD је остварио нови фајл систем (devfs), који динамично додаје и брише чворове уређаја, допуштајући приступ уређајима преко конекционог пута, препознајући драјвере по серијском броју и уклањајући потребу за /dev
хијерархијом фајл система. Имплементован је као Google Summer of Code 2009 пројекат.[29]
Апликациони снепшотови (snapshots)
ДрагонФлај BSD подржава Амига апликационе карактеристике: направи снепшот великог, динамички повезаног простора програмске виртуалне меморије након учитавања, омогућавајући да се наредне инстанце програма покрећу много брже него што би иначе требало. Ово мења могћности прелинковања које су радиле на ранијим верзијама пројекта, док је основна подршка знатно ефикаснија. Велики програми као они нађени у КДЕ-овој компилацији софтвера са много подељених библиотека ће имати користи највише од ове подршке.[30]
Развој и дистрибуција
Као са FreeBSD-ом и OpenBSD-ом, програмери ДрагонФлај BSD-а су полако заменили K&R стил C кода са нечим модернијим, АНСИ стилом. Слично другим оперативним системима, ДрагонФлај BSD-ова верзија ГНУ-ове колекције компајлера има побољшање које је названо Stack-Smashing Protector , који омогућава додатну заштиту против напада облика преливања бафера. Требало би забележити да се од 23. јула 2015. године, заштита језгра не прави уобичајено.[30]
Као део FreeBSD-а, ДрагонФлај је наследио лако-се-користи уграђени систем који може да направи базу целокупног система помоћу извора и пар команди. ДрагонФлај програмери користе Гит систем контроле верзија како би променили изворни код ДрагонФлај-а. За разлику од његовог родитеља FreeBSD-а, ДрагонФлај има и стабилне и нестабилне верзије у једном изворном стаблу, због мале развојне групе.[5]
Као и друга BSD језгра (и јегра најмодернијих оперативних система), и ДрагонФлај користи уграђене дибагере језгра како би помогао програмерима у проналажењу багова у језгру. У октобру 2004, дибагер језгра, који је користио извештаје о баговима како би пронашао проблеме везане за језгро, је иснталиран по дифолту, у замену за веома мали простор на диску. Када је ново језгро инсталирано, копија бекапа претходног језгра и њених модула се раздваја од њених симбола за дибаговање како би још више смањила простор на диску који користи.
Дистрибутивна медија
Оперативни систем је дистрибуисан као Live CD и Live USB (доступан целокупни X11) који се у потпуности поклапа са ДрагонФлај системом.[16][29] То укључује основни систем и целокупан сет упутстава, а може да укључујује и изворни код и корисне пакете за нове верзије. Предност тога је да се са једним CD-ом може инсталирати софтвер на рачунар, користи целукпни сет алата за поправке и инсталације, или да се представи могућност целог система без његове инсталације. Дневни снепшотови си доступни за оне који желе да инсталирају најновије верзије ДрагонФлаја а да не раде то преко извора.
Као и други BSD-ови отвореног кода, и ДрагонФлај је дистрибуисан под условима модерне верзије BSD лиценце.
Историја објава
Верзија
|
Датум[31]
|
Измене
|
4.2
|
29. јун 2015
|
- ГЦЦ 5.1.1
- Унапређен i915 и Радеон подршка
- Унапређена звучна подршка
- Унапређена подршка за контролисање меморије и темературни сензори
- Откривање МТУ пута омогучено по дифолту
- SCTP подршка уклоњена
- Sendmail замењен са ДрагонФлај-евим Mail Agent-ом (ДМА), МТА
- ГНУ инфо стране укинуте
|
4.0
|
25. новембар 2014
|
- Не-закључавање, вишенитни ФВ
- Везано умрежавање за бољи проток
- Procctl заштита у језгру
- Подршка за процесоре до 256
- Побољшана подршка за бежично умрежавање
- Раст и ФриПаскал су сада подржани
- i915 подршка значајно унапређена
- ГЦЦ 4.7.4
|
3.8
|
4. јун 2014
|
- Динамичко повезивање и ПАМ подршка
- USB4BSD подразумеван
- Оригинална C-State подршка за интелове процесоре
- TCP порт токен подељен ради бољих TCP connect(2) перформанси
- ГЦЦ 4.7.3
- ХАМЕР2 у систему
- Финални 32-битни, објављен
|
3.6
|
25. новембар 2013
|
|
3.4
|
29. апрли 2013
|
- Нови пакетни менаџер, Дпортови
- ГЦЦ4.7
- Унапређен ЦПУ рад и tmpfs перформансе
|
3.2
|
2. новембар 2012
|
- Мулти-процесорско језгро-обавезно
- Унапређење рада код планера.
- USB4BSD портован из FreeBSD-а омогућава USB 3.0 подршку.
- Пафс донет из NetBSD-а.
|
3.0
|
22. фебруар 2012
|
|
2.10
|
26. април 2011
|
- Велика брава обрисана са свих делове сем подсистема виртуалне меморије
- ХАМЕР не-дупликација
- ГЦЦ 4.4
- спајање система- поново написано
- значајна унапређења перформанси
|
2.8
|
30. октобар 2010
|
|
2.6
|
6. април 2010
|
- swapcache
- tmpfs портован са NetBSD-а
- ХАМЕР побољшања
|
2.4
|
16. септембар 2009
|
|
2.2
|
17. фебруар 2009
|
|
2.0
|
20. јул 2008
|
- велика унапређења ХАМЕР-а
|
1.12
|
26. фебруар 2008
|
- OpenBSD-ови хардвер сензори импортовани са FreeBSD-а
- Блутут
- ГЦЦ 4.1
- ДрагонФлај мејл-агент
- подршка за 386 процесор опала
- првобитна x86-64 подршка (не-функционална)
- експериментална ХАМЕР подршка
|
1.10
|
6. абгуст 2007
|
|
1.8
|
30. јануар 2007
|
- имплементација виртуалног језгра
|
1.6
|
24. јул 2006
|
- нови генератор насумичних бројева
- IEEE 802.11 фрејмворк обновљен
- ВФС побољшања
- значајна побољшања стабилности[33]
|
1.4
|
7. јануар 2006
|
|
1.2
|
8. април 2005
|
|
1.0
|
12. јул 2004
|
|
Види још
Референце
- ^ „DragonFly BSD 5.4”. Dragonfly BSD. 3. 12. 2018. Приступљено 4. 12. 2018.
- ^ Dillon, Matthew (16. 7. 2003), „Announcing DragonFly BSD!”, freebsd-current mailing list, Приступљено 26. 7. 2007
- ^ Lehey, Greg (2001), Improving the FreeBSD SMP implementation (pdf), USENIX, Приступљено 22. 2. 2012
- ^ а б Kerner, Sean Michael (10. 1. 2006), „New DragonFly Released For BSD Users”, InternetNews, Архивирано из оригинала 05. 06. 2014. г., Приступљено 20 11. 2011
- ^ а б в г д ђ Biancuzzi, Federico (08. 7. 2004), „Behind DragonFly BSD”, O'Reilly Media, Архивирано из оригинала 05. 06. 2014. г., Приступљено 20. 11. 2011
- ^ Loli-Queru, Eugenia (13. 3. 2004), „Interview with Matthew Dillon of DragonFly BSD”, OSNews, Приступљено 22. 2. 2012
- ^ а б в г д ђ Chisnall, David (15. 6. 2007), „DragonFly BSD: UNIX for Clusters?”, InformIT, Приступљено 22. 11. 2011
- ^ Hsu, Jeffery M., The DragonFly BSD Operating System (PDF), Архивирано из оригинала (pdf) 08. 08. 2017. г., Приступљено 20. 11. 2011
- ^ а б в Andrews, Jeremy (06. 8. 2007), „Interview: Matthew Dillon”, KernelTrap, Архивирано из оригинала 15. 5. 2011. г., Приступљено 10. 1. 2016
- ^ „DragonFly BSD MP Performance Significantly Improved”, OSNews, 16. 11. 2011, Приступљено 19 11. 2011
- ^ а б Luciani, Robert (24. 5. 2009), M:N threading in DragonflyBSD (PDF), BSDCon, Архивирано из оригинала (pdf) 23. 12. 2010. г.
- ^ Sherrill, Justin (11. 1. 2004), Paying off already, Архивирано из оригинала 30. 04. 2014. г., Приступљено 20. 11. 2011
- ^ Pistritto, Joe; Dillon, Matthew; Sherrill, Justin C.; et al. (24. 4. 2004), „Serializing token”, kernel mailing list, Архивирано из оригинала 05. 02. 2017. г., Приступљено 20. 3. 2012
- ^ Bonwick, Jeff; Adams, Jonathan (03. 1. 2002), Magazines and Vmem: Extending the Slab Allocator to Many CPUs and Arbitrary Resources, USENIX, Приступљено 20 11. 2011
- ^ Dillon, Matthew (23. 4. 2009), „New libc malloc committed”, kernel mailing list, Приступљено 08. 8. 2011
- ^ а б в г Vervloesem, Koen (21. 4. 2010), „DragonFly BSD 2.6: towards a free clustering operating system”, LWN.net, Приступљено 19. 11. 2011
- ^ Economopoulos, Aggelos (16. 4. 2007), „A peek at the DragonFly Virtual Kernel”, LWN.net (part 1), Приступљено 08. 12. 2011
- ^ Economopoulos, Aggelos (16. 4. 2007), „A peek at the DragonFly Virtual Kernel”, LWN.net (part 2), Приступљено 08. 12. 2011
- ^ „HowTo DPorts”, DragonFly BSD, Приступљено 02. 12. 2013
- ^ Weinem, Mark (2007), „10 years of pkgsrc”, NetBSD, Приступљено 22. 11. 2011
- ^ Sherrill, Justin (30. 9. 2013), „Why dports?”, DragonFly BSD Digest, Архивирано из оригинала 30. 04. 2014. г., Приступљено 02. 12. 2013
- ^ Sherrill, Justin (29. 9. 2013), „Any new packages?”, users mailing list, Приступљено 02. 12. 2013
- ^ Buschmann, Jonathan (14. 3. 2007), „First Patch to get CARP on Dfly”, kernel mailing list, Приступљено 20. 11. 2011
- ^ „CARP(4) manual page”, DragonFly On-Line Manual Pages, Приступљено 20. 11. 2011
- ^ Dillon, Matthew (10. 10. 2007), „Re: HAMMER filesystem update – design document”, kernel mailing list, Приступљено 20. 11. 2011
- ^ Larabel, Michael (07. 1. 2011), „Can DragonFlyBSD's HAMMER Compete With Btrfs, ZFS?”, Phoronix, Приступљено 20. 11. 2011, „HAMMER does appear to be a very interesting BSD file-system. It is though not quite as fast as the ZFS file-system on BSD, but this is also an original file-system to the DragonFlyBSD project rather than being a port from OpenSolaris. Not only is HAMMER generally faster than the common UFS file-system, but it also has a much greater feature-set.”
- ^ Dillon, Matthew (08. 2. 2012), „DESIGN document for HAMMER2 (08-Feb-2012 update)”, users, Приступљено 22. 2. 2012
- ^ „DragonFly Release 3.8”, DragonFly BSD, Приступљено 19. 6. 2014
- ^ а б Mr (07. 1. 2010), „DragonFlyBSD with Matthew Dillon”, bsdtalk, Архивирано из оригинала (ogg) 25. 4. 2012. г., Приступљено 20. 11. 2011
- ^ а б „DragonFly BSD diary”, DragonFly BSD, 07. 1. 2006, Приступљено 19. 11. 2011
- ^ „DragonFly: Releases”, DragonFly BSD, Приступљено 19. 6. 2014
- ^ Tigeot, Francois (31. 7. 2007), „KMS + i915 support now in -master”, users mailing list, Приступљено 02. 12. 2013
- ^ а б Kerner, Sean Michael (25. 7. 2006), „DragonFly BSD 1.6 Cuts the Cord”, InternetNews, Архивирано из оригинала 05. 06. 2014. г., Приступљено 20. 11. 2011
- ^ Townsend, Trent (18. 1. 2006), „A Quick Review of DragonFly BSD 1.4”, OSNews, Приступљено 16 11. 2011
Спољашње везе