Драгонфлај БСД

(преусмерено са ДрагонФлај БСД)

Драгонфлај БСД је јуниксолик слободан оперативни систем отвореног кода одвојен од Фри БСД-а 4.8. Метју Дилон, програмер Амиге крајем 1980-их и почетком 1990-их и програмер Фри БСД-а између 1994. и 2003. године, почео је да ради на Драгонфлај БСД-у у јуну 2003. и најавио га на дописним листама Фри БСД-а 16. јула 2003. године.[2]

Драгонфлај БСД
Учитавач покретања Драгонфлај БСД-а 4.2.3
ПрограмерМетју Дилон
ОС породицајуниксолик
Радно стањеактуелан
Изворни моделотвореног кода
Прво издање1.0 / 12. јул 2004.; пре 20 година (2004-07-12)
Најновије издање5.4.1 / 24. децембар 2018.; пре 5 година (2018-12-24)[1]
Доступан наенглески
Управљач пакетимаpkg
Платформеx86-64
Тип кернелахибридан
Кориснички просторБСД
Подразумевани КИЈуникс љуска
Званични веб-сајтwww.dragonflybsd.org


Дилон је покренуо Драгонфлај у уверењу да ће технике усвојене за нитање и симетрично вишеструко обрађивање у Фри БСД-у 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
  • ХАМЕР спреман за производњу[16]
  • велика побољшања стабилности
  • LiveDVD и LiveUSB
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

Види још

уреди

Референце

уреди
  1. ^ „DragonFly BSD 5.4”. Dragonfly BSD. 3. 12. 2018. Приступљено 4. 12. 2018. 
  2. ^ Dillon, Matthew (16. 7. 2003), „Announcing DragonFly BSD!”, freebsd-current mailing list, Приступљено 26. 7. 2007 
  3. ^ Lehey, Greg (2001), Improving the FreeBSD SMP implementation (pdf), USENIX, Приступљено 22. 2. 2012 
  4. ^ а б Kerner, Sean Michael (10. 1. 2006), „New DragonFly Released For BSD Users”, InternetNews, Архивирано из оригинала 05. 06. 2014. г., Приступљено 20 11. 2011  Проверите вредност парамет(а)ра за датум: |access-date= (помоћ)
  5. ^ а б в г д ђ Biancuzzi, Federico (08. 7. 2004), „Behind DragonFly BSD”, O'Reilly Media, Архивирано из оригинала 05. 06. 2014. г., Приступљено 20. 11. 2011 
  6. ^ Loli-Queru, Eugenia (13. 3. 2004), „Interview with Matthew Dillon of DragonFly BSD”, OSNews, Приступљено 22. 2. 2012 
  7. ^ а б в г д ђ Chisnall, David (15. 6. 2007), „DragonFly BSD: UNIX for Clusters?”, InformIT, Приступљено 22. 11. 2011 
  8. ^ Hsu, Jeffery M., The DragonFly BSD Operating System (PDF), Архивирано из оригинала (pdf) 08. 08. 2017. г., Приступљено 20. 11. 2011 
  9. ^ а б в Andrews, Jeremy (06. 8. 2007), „Interview: Matthew Dillon”, KernelTrap, Архивирано из оригинала 15. 5. 2011. г., Приступљено 10. 1. 2016 
  10. ^ „DragonFly BSD MP Performance Significantly Improved”, OSNews, 16. 11. 2011, Приступљено 19 11. 2011  Проверите вредност парамет(а)ра за датум: |access-date= (помоћ)
  11. ^ а б Luciani, Robert (24. 5. 2009), M:N threading in DragonflyBSD (PDF), BSDCon, Архивирано из оригинала (pdf) 23. 12. 2010. г. 
  12. ^ Sherrill, Justin (11. 1. 2004), Paying off already, Архивирано из оригинала 30. 04. 2014. г., Приступљено 20. 11. 2011 
  13. ^ Pistritto, Joe; Dillon, Matthew; Sherrill, Justin C.; et al. (24. 4. 2004), „Serializing token”, kernel mailing list, Архивирано из оригинала 05. 02. 2017. г., Приступљено 20. 3. 2012 
  14. ^ Bonwick, Jeff; Adams, Jonathan (03. 1. 2002), Magazines and Vmem: Extending the Slab Allocator to Many CPUs and Arbitrary Resources, USENIX, Приступљено 20 11. 2011  Проверите вредност парамет(а)ра за датум: |access-date=, |year= / |date= mismatch (помоћ)
  15. ^ Dillon, Matthew (23. 4. 2009), „New libc malloc committed”, kernel mailing list, Приступљено 08. 8. 2011 
  16. ^ а б в г Vervloesem, Koen (21. 4. 2010), „DragonFly BSD 2.6: towards a free clustering operating system”, LWN.net, Приступљено 19. 11. 2011 
  17. ^ Economopoulos, Aggelos (16. 4. 2007), „A peek at the DragonFly Virtual Kernel”, LWN.net (part 1), Приступљено 08. 12. 2011 
  18. ^ Economopoulos, Aggelos (16. 4. 2007), „A peek at the DragonFly Virtual Kernel”, LWN.net (part 2), Приступљено 08. 12. 2011 
  19. ^ „HowTo DPorts”, DragonFly BSD, Приступљено 02. 12. 2013 
  20. ^ Weinem, Mark (2007), „10 years of pkgsrc”, NetBSD, Приступљено 22. 11. 2011  |chapter= игнорисан (помоћ)
  21. ^ Sherrill, Justin (30. 9. 2013), „Why dports?”, DragonFly BSD Digest, Архивирано из оригинала 30. 04. 2014. г., Приступљено 02. 12. 2013 
  22. ^ Sherrill, Justin (29. 9. 2013), „Any new packages?”, users mailing list, Приступљено 02. 12. 2013 
  23. ^ Buschmann, Jonathan (14. 3. 2007), „First Patch to get CARP on Dfly”, kernel mailing list, Приступљено 20. 11. 2011 
  24. ^ „CARP(4) manual page”, DragonFly On-Line Manual Pages, Приступљено 20. 11. 2011 
  25. ^ Dillon, Matthew (10. 10. 2007), „Re: HAMMER filesystem update – design document”, kernel mailing list, Приступљено 20. 11. 2011 
  26. ^ 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. 
  27. ^ Dillon, Matthew (08. 2. 2012), „DESIGN document for HAMMER2 (08-Feb-2012 update)”, users, Приступљено 22. 2. 2012 
  28. ^ „DragonFly Release 3.8”, DragonFly BSD, Приступљено 19. 6. 2014 
  29. ^ а б Mr (07. 1. 2010), „DragonFlyBSD with Matthew Dillon”, bsdtalk, Архивирано из оригинала (ogg) 25. 4. 2012. г., Приступљено 20. 11. 2011 
  30. ^ а б „DragonFly BSD diary”, DragonFly BSD, 07. 1. 2006, Приступљено 19. 11. 2011 
  31. ^ „DragonFly: Releases”, DragonFly BSD, Приступљено 19. 6. 2014 
  32. ^ Tigeot, Francois (31. 7. 2007), „KMS + i915 support now in -master”, users mailing list, Приступљено 02. 12. 2013 
  33. ^ а б Kerner, Sean Michael (25. 7. 2006), „DragonFly BSD 1.6 Cuts the Cord”, InternetNews, Архивирано из оригинала 05. 06. 2014. г., Приступљено 20. 11. 2011 
  34. ^ Townsend, Trent (18. 1. 2006), „A Quick Review of DragonFly BSD 1.4”, OSNews, Приступљено 16 11. 2011  Проверите вредност парамет(а)ра за датум: |access-date= (помоћ)

Спољашње везе

уреди