Dragonflaj BSD je juniksolik slobodan operativni sistem otvorenog koda odvojen od Fri BSD-a 4.8. Metju Dilon, programer Amige krajem 1980-ih i početkom 1990-ih i programer Fri BSD-a između 1994. i 2003. godine, počeo je da radi na Dragonflaj BSD-u u junu 2003. i najavio ga na dopisnim listama Fri BSD-a 16. jula 2003. godine.[2]

Dragonflaj BSD
Učitavač pokretanja Dragonflaj BSD-a 4.2.3
ProgramerMetju Dilon
OS porodicajuniksolik
Radno stanjeaktuelan
Izvorni modelotvorenog koda
Prvo izdanje1.0 / 12. jul 2004. god.; pre 19 godina (2004-07-12)
Najnovije izdanje5.4.1 / 24. decembar 2018. god.; pre 5 godina (2018-12-24)[1]
Dostupan naengleski
Upravljač paketimapkg
Platformex86-64
Tip jezgrahibridan
Korisnički prostorBSD
Podrazumevani KIJuniks ljuska
Zvanični veb-sajtwww.dragonflybsd.org


Dilon je pokrenuo Dragonflaj u uverenju da će tehnike usvojene za nitanje i simetrično višestruko obrađivanje u Fri BSD-u 5[3] dovesti do loših performansi i problema održavanja. Tražio je ispravku ovih očekivanih problema u okviru projekta Fri BSD.[4] Zbog sukoba sa drugim programerima Fri BSD-a zbog primene svojih ideja,[5] njegova sposobnost da direktno menja kodnu bazu je na kraju opozvana. Uprkos tome, projekti Dragonflaj BSD-a i Fri BSD-a još uvek rade zajedno, dele ispravke grešaka, ažuriranja upravljačkih programa i druga poboljšanja.

Namenjen da bude logični nastavak serije 4.x Fri BSD-a, Dragonflaj se značajno razlikovao od Fri BSD-a, primenom lake niti jezgra (LVKT), sistema za prosleđivanje poruka u jezgru i HAMER sistem datoteka.[6] Na mnoge koncepte dizajna Dragonflaja uticao je Amiga OS.[7]

Dizajn sistema uredi

Jezgro uredi

DragonFlajevo jezgro je hibridno, sadrži karakteristike i monolitnog i mikrojezgra, kao što mogućnost razmene poruka kod mikrojezgra omogućava da veliki deo operativnog sistema beneficira od zaštićene memorije, kao i zadržavanje brzine monolitnih jezgra prilikom obavljanja nekih kritičnih zadataka. Podsistem poruka je razvijen na sličan načina kao kod mikrojezgara Mek-a, iako nije toliko složen po dizajnu. DragonFlaj-ev podsistem poruka ima sposobnost da se ponaša i na sinhron i na asinhron način, i koristeći tu mogućnost pokušava da dostigne najbolje moguće performanse i bilo kojoj situaciji.[8]

Prema programeru Metjuu Dilonu, razvoj je bio usresređen na omogućavanje i izlaznih i ulaznih uređaja (I / O) i virtuelne fajl sistem (OSS) mogućnosti za razmenu poruka što će predstavljati podsetnik na ciljeve projekte koje treba dostići. Nova infrastruktura će omogućiti da mnogi delovi jezgra budu sastavni deo korisničkog prostora; jer će ovde njihova popravka biti znatno lakša jer će biti znazno manji, izolovani programi, umesto da budu sitni delovi  upleteni u većem delu koda. Takođe, pomeranje određenog dela koda jezgra u korisnički prostor će doprineti da sistem bude znatno nezavisniji; ako se korisnički prostor pokvari, to neće uticati na samo jezgro.[9]

Sistemski pozivi su podeljeni na korisničku i kernel verziju i kapsulirani su u porukama. To će doprineti smanjenju veličine i kompleksnosti jezgra pomeranjem varijanti standardnog sistema u korisnički kompatibilni prostor, i pomoći da se sačuva podudarnost i veza između verzija DragonFlaja . Linuksov i kodovi drugih operativnih sistemia nalik Juniksu su premeštani na sličan način.[7]

Izvršavanje uredi

Kako je podrška za arhitekture procesora počela da komplikuje podršku simetričnog multiprocesovanja (SMP),[5] DragonFlaj BSD je sada ograničio podršku na x86-64 platformu.[10] DragonFlaj je u originalu koristio x86 arhitekturu, međutim od verzije 4.0 pa na dalje je više ne podržava. Od verzije 1.10, DragonFlaj podržava 1:1 korisnički navoj (jedan navoj jezgra po jednom navoju),[11] što se smatra relativno jednostavnim rešenjem koje je takođe i lako za sprovođenje.[7] Naslađen od FreeBSD-a, DragonFlaj takođe podržava multi-navijanje.[12]

U DragonFlaj-u, svaki procesor ima sopstveni raspored navoja. Nakon nastanka, navoji su pripojeni procesoru i nikada nisu premeštani sa jednog procesora na drugi; oni se jedino premeštaju ako se pojavi inter-procesorska prekidna (IPI) poruka između tih procesora. Inter-procesorski raspored navoja se takođe postiže i slanjem asinhronih IPI poruka. Prednost ove jednostavne podeljenosti podsistema navoja je da keš centralnih procesorskih jedinica u sistemima simetričnih multi-procesora ne sadrži duplikate podataka, što omogućava bolji rad davajući svakom procesoru u sistemu mogućnost da koristi sopstveni keš za skladištenje različitih stvari na kojima trenutno radi taj procesor.[7]

Podsistem lakih niti jezgra je osnovan kao deo više niti jezgra (na primer internet kodu postoji jedna nit po protokolu po procesoru), koji smanjuje konkurenciju tako što briše potrebu za deljenjm određenih resursa među različitim zadacima jezgra.[5]

Zaštita podeljenih resursa uredi

Kako bi se bezbedno pokretao na multi-procesorskim mašinama, pristup podeljenim resursima (kao što su fajlovi, strukture podataka) mora da bude serijalizovan tako da niti ili procesi ne pokušavaju da modifikuju iste resurse u isto vreme. Da bi sprečio višestruke niti da prstupaju ili modifikuju podeljene resurse istovremeno, DragoFlaj je upotrebio kritičnu deonicu, i serijalizovane tokene kako bi sprečio istovremeni pristup. Dok su i Linuks i FreeBSD 5 počeli da koriste muteks modele kako bi postigli bolje performanse na multi-procesorskim sistemima, DragoFlaj nije to uradio.[5] Donedavno, DragonFlaj je koristio spls, ali su oni zamenjeni sa kritičnim deonicama.

Veći deo jezgra sistema, uključujući LVKT podsistem, podsistem IPI poruka i novi i novi alokator memorije jezgra, nisu zaključani, što znači da rade bez upotrebe mjuteks-a, sa svakim procesom koji radi na jednom procesoru. Kritične deonice se koriste za zaštitu od lokalnih prekida, pojedinačno za svaki procesor, i garantuju da nit koja se sada izvršava neće biti unapred ispražnjena. [11]

Serijalizovanje tokena je proces koji se koristi kako bi se sprečio istovremeni pristup drugih procesora i može da se izvršava istovremeno od strane višestrukih niti, ali pod uslovom da ga jedna nit ivršava u jednom trenutku. Blokirane ili uspavane niti ne sprečavaju ostale niti od pristupa podeljenim resursima za razliku od niti koje sadrže muteks. Pored drugih stvari, korišćenje serijalizovanja tokena sprečava mnoge situacije koje bi rezultovale zastojem ili  prioritetnim zamenama usled korišćenja muteksa, kao i ogromno pojednostavljenje dizajna i implementacije složenih procedura koje bi zahtevale da resurs bude podeljen među višestrukim nitima. Kod serijalizovanja tokena je napredovao u nešto veoma slično Čitaj-kopiraj-ažuriraj opciji koja sada postoji na Linuksu.  Za razliku od trenutne RCU Linuksove implementacije, DragonFlaj je implenetiran tako da samo procesori koji se takmiče za iste tokene mogu da budu pogođeni, umesto da se to desi svim procesorima u računaru.[13]

DragonFlaj se prebacio na multi-procesorski sigurni pločasti alokator, koji ne zahteva ni mjutekse ni blokiranje operacija za zadatke koje obavlja memorija.[14] On je na kraju priključen standardnoj C biblioteci, gde je zamenio FreeBSD-ovu implementaciju.[15]

Virtuelno jezgro uredi

Nakon objavljivanja 1.8 verzije, DragonFlaj ima virtualizovani mehanizam sličan UML-u,[16] koji omogućava korisniku da pokrene drugo jezgro u svom okruženju. Virtualno jezgro (vkernel) se pokreće u kompletno izolovanoj sredini sa emuliranom mrežom i skladišnim interfejsom, kao i pojenostavljenim podstisteima za kontrolu jezgra i karakteristikama grupisanja.[7][9]

Vjezgro ima dve bitne razlike u odnosu na pravo jezgro: nedostaje mu mnogo rutina koje se bave jednostavnim upravljanjima hardvera i koriste funkcije C standardne biblioteke (libc) na mestima unutar-jezgrarnih implementacija, gde je to moguće. Pošto su i virtualno i realno jezgro kompajlirani iz istog izvornog koda, to znači da rutine koje zavise od platforme i implementacije funkcija C biblioteke su jasno razdvojene u izvornom stablu.[17]

Virtualna platforma vjezgra radi na ugrađenim apstrakcijama visokog nivoa omogućenim od realnog jezgra. Ove apstrakcije uključuju kkju-nalik tajmer, konzolu (postavljenu na vitualni terminal gde se pokreće vjezgro), sliku diska i Eternet uređaj za virtualno jezgro (VKE), spajajući sve pakete kako bi nastao tap interfejs.[18]

Paketni menadžment uredi

Trećerazredni softver je dostupan na DragonFlaj-u kao binarni paket pkgng ili preko osnovne kolekcije porotva-Dportovi .[19]

DragonFlaj je prvobitno koristio kolekciju FreeBSD portova kao oficijelni paket za upravljanje sistemom, ali počevši od verzije 1.4 se prebacio na NetBSD-ov pkgsrc sistem, koji se doživljavao kao način za smanjenje obima posla potrebnog za trećerazredni softver.[4][20] Konačno, održavanje kompatibilnosti sa pkgsrc  se pokazalo da je uzrokovalo mnogo više napora nego što je predviđeno, tako da je nastao projekat DPortovi, povrh kolekcije FreeBSD portova.[21][22]

KARP podrška uredi

Prvobitna implementacija KARP-a (Common Address Redundancy Protocol) je završena u martu 2007. godine.[23] A od 2011, KARP podrška je spojena u DragonFlaj BSD.[24]

HAMER fajl sistem uredi

Porek Juniks fajl sistema, koji je bio tipični fajl sistem na BSD-u, DragonFlaj BSD podržava HAMER fajl sistem. On je nastao specifično za DragoFlaj BSD kako bi obezbedio veliki broj novih karakteristika a i boljeg je dizajna od popularnog ZFS-a.[7][9][25] HAMER podržava konfiguracionu istoriju falj sistema, snepšot, čeksaming, ne-dupliranje podataka i druge karakteristike tipične za ovakav fajl sistem.[16][26]

Sledeću generaciju HAMER fajl sistema (HAMER 2) prizvodi Dilon.[27] DragonFlaj BSD 3.8.0 je bio prvi objavljeni fajl sistem koji podržava HAMER 2, iako je deklarisano da nije još spreman za generalnu upotrebu.[28]

Devfs (devfs) uredi

U 2007. godini DragonFlaj BSD je ostvario novi fajl sistem (devfs), koji dinamično dodaje i briše čvorove uređaja, dopuštajući pristup uređajima preko konekcionog puta, prepoznajući drajvere po serijskom broju i uklanjajući potrebu za  /dev hijerarhijom fajl sistema. Implementovan je kao Google Summer of Code 2009 projekat.[29]

Aplikacioni snepšotovi (snapshots) uredi

DragonFlaj BSD podržava Amiga aplikacione karakteristike: napravi snepšot velikog, dinamički povezanog prostora programske virtualne memorije nakon učitavanja, omogućavajući da se naredne instance programa pokreću mnogo brže nego što bi inače trebalo. Ovo menja mogćnosti prelinkovanja koje su radile na ranijim verzijama projekta, dok je osnovna podrška znatno efikasnija. Veliki programi kao oni nađeni u KDE-ovoj kompilaciji softvera sa mnogo podeljenih biblioteka će imati koristi najviše od ove podrške.[30]

Razvoj i distribucija uredi

Kao sa FreeBSD-om i OpenBSD-om, programeri DragonFlaj BSD-a su polako zamenili K&R stil C koda sa nečim modernijim, ANSI stilom. Slično drugim operativnim sistemima, DragonFlaj BSD-ova verzija GNU-ove kolekcije kompajlera ima poboljšanje koje je nazvano Stack-Smashing Protector , koji omogućava dodatnu zaštitu protiv napada oblika prelivanja bafera. Trebalo bi zabeležiti da se od 23. jula 2015. godine, zaštita jezgra ne pravi uobičajeno.[30]

Kao deo FreeBSD-a, DragonFlaj je nasledio lako-se-koristi ugrađeni sistem koji može da napravi bazu celokupnog sistema pomoću izvora i par komandi. DragonFlaj programeri koriste Git sistem kontrole verzija kako bi promenili izvorni kod DragonFlaj-a. Za razliku od njegovog roditelja FreeBSD-a, DragonFlaj ima i stabilne i nestabilne verzije u jednom izvornom stablu, zbog male razvojne grupe.[5]

Kao i druga BSD jezgra (i jegra najmodernijih operativnih sistema), i DragonFlaj koristi ugrađene dibagere jezgra kako bi pomogao programerima u pronalaženju bagova u jezgru. U oktobru 2004, dibager jezgra, koji je koristio izveštaje o bagovima kako bi pronašao probleme vezane za jezgro, je isntaliran po difoltu, u zamenu za veoma mali prostor na disku. Kada je novo jezgro instalirano, kopija bekapa prethodnog jezgra i njenih modula se razdvaja od njenih simbola za dibagovanje kako bi još više smanjila prostor na disku koji koristi.

Distributivna medija uredi

Operativni sistem je distribuisan kao  Live CD i Live USB (dostupan celokupni X11) koji se u potpunosti poklapa sa DragonFlaj sistemom.[16][29] To uključuje osnovni sistem i celokupan set uputstava, a može da uključujuje i izvorni kod i korisne pakete za nove verzije. Prednost toga je da se sa jednim CD-om može instalirati softver na računar, koristi celukpni set alata za popravke i instalacije, ili da se predstavi mogućnost celog sistema bez njegove instalacije. Dnevni snepšotovi si dostupni za one koji žele da instaliraju najnovije verzije DragonFlaja a da ne rade to preko izvora.

Kao i drugi BSD-ovi otvorenog koda, i DragonFlaj je distribuisan pod uslovima moderne verzije BSD licence.

Istorija objava uredi

Verzija Datum[31] Izmene
4.2 29. jun 2015
  • GCC 5.1.1
  • Unapređen i915 i Radeon podrška
  • Unapređena zvučna podrška
  • Unapređena podrška za kontrolisanje memorije i temeraturni senzori
  • Otkrivanje MTU puta omogučeno po difoltu
  • SCTP podrška uklonjena
  • Sendmail zamenjen sa DragonFlaj-evim Mail Agent-om (DMA), MTA
  • GNU info strane ukinute
4.0 25. novembar 2014
  • Ne-zaključavanje, višenitni FV
  • Vezano umrežavanje za bolji protok
  • Procctl zaštita u jezgru
  • Podrška za procesore do 256
  • Poboljšana podrška za bežično umrežavanje
  • Rast i FriPaskal su sada podržani
  • i915 podrška značajno unapređena
  • GCC 4.7.4
3.8 4. jun 2014
  • Dinamičko povezivanje i PAM podrška
  • USB4BSD podrazumevan
  • Originalna C-State podrška za intelove procesore
  • TCP port token podeljen radi boljih TCP connect(2) performansi
  • GCC 4.7.3
  • HAMER2 u sistemu
  • Finalni 32-bitni, objavljen
3.6 25. novembar 2013
3.4 29. aprli 2013
  • Novi paketni menadžer, Dportovi
  • GCC4.7
  • Unapređen CPU rad i tmpfs performanse
3.2 2. novembar 2012
  • Multi-procesorsko jezgro-obavezno
  • Unapređenje rada kod planera.
  • USB4BSD portovan iz FreeBSD-a omogućava USB 3.0 podršku.
  • Pafs donet iz NetBSD-a.
3.0 22. februar 2012
2.10 26. april 2011
  • Velika brava obrisana sa svih delove sem podsistema virtualne memorije
  • HAMER ne-duplikacija
  • GCC 4.4
  • spajanje sistema- ponovo napisano
  • značajna unapređenja performansi
2.8 30. oktobar 2010
2.6 6. april 2010
  • swapcache
  • tmpfs portovan sa NetBSD-a
  • HAMER poboljšanja
2.4 16. septembar 2009
2.2 17. februar 2009
2.0 20. jul 2008
  • velika unapređenja HAMER-a
1.12 26. februar 2008
  • OpenBSD-ovi hardver senzori importovani sa FreeBSD-a
  • Blutut
  • GCC 4.1
  • DragonFlaj mejl-agent
  • podrška za 386 procesor opala
  • prvobitna x86-64 podrška (ne-funkcionalna)
  • eksperimentalna HAMER podrška
1.10 6. abgust 2007
1.8 30. januar 2007
  • implementacija virtualnog jezgra
1.6 24. jul 2006
  • novi generator nasumičnih brojeva
  • IEEE 802.11 frejmvork obnovljen
  • VFS poboljšanja
  • značajna poboljšanja stabilnosti[33]
1.4 7. januar 2006
1.2 8. april 2005
1.0 12. jul 2004

Vidi još uredi

Reference uredi

  1. ^ „DragonFly BSD 5.4”. Dragonfly BSD. 3. 12. 2018. Pristupljeno 4. 12. 2018. 
  2. ^ Dillon, Matthew (16. 7. 2003), „Announcing DragonFly BSD!”, freebsd-current mailing list, Pristupljeno 26. 7. 2007 
  3. ^ Lehey, Greg (2001), Improving the FreeBSD SMP implementation (pdf), USENIX, Pristupljeno 22. 2. 2012 
  4. ^ a b Kerner, Sean Michael (10. 1. 2006), „New DragonFly Released For BSD Users”, InternetNews, Arhivirano iz originala 05. 06. 2014. g., Pristupljeno 20 11. 2011  Proverite vrednost paramet(a)ra za datum: |access-date= (pomoć)
  5. ^ a b v g d đ Biancuzzi, Federico (08. 7. 2004), „Behind DragonFly BSD”, O'Reilly Media, Arhivirano iz originala 05. 06. 2014. g., Pristupljeno 20. 11. 2011 
  6. ^ Loli-Queru, Eugenia (13. 3. 2004), „Interview with Matthew Dillon of DragonFly BSD”, OSNews, Pristupljeno 22. 2. 2012 
  7. ^ a b v g d đ Chisnall, David (15. 6. 2007), „DragonFly BSD: UNIX for Clusters?”, InformIT, Pristupljeno 22. 11. 2011 
  8. ^ Hsu, Jeffery M., The DragonFly BSD Operating System (PDF), Arhivirano iz originala (pdf) 08. 08. 2017. g., Pristupljeno 20. 11. 2011 
  9. ^ a b v Andrews, Jeremy (06. 8. 2007), „Interview: Matthew Dillon”, KernelTrap, Arhivirano iz originala 15. 5. 2011. g., Pristupljeno 10. 1. 2016 
  10. ^ „DragonFly BSD MP Performance Significantly Improved”, OSNews, 16. 11. 2011, Pristupljeno 19 11. 2011  Proverite vrednost paramet(a)ra za datum: |access-date= (pomoć)
  11. ^ a b Luciani, Robert (24. 5. 2009), M:N threading in DragonflyBSD (PDF), BSDCon, Arhivirano iz originala (pdf) 23. 12. 2010. g. 
  12. ^ Sherrill, Justin (11. 1. 2004), Paying off already, Arhivirano iz originala 30. 04. 2014. g., Pristupljeno 20. 11. 2011 
  13. ^ Pistritto, Joe; Dillon, Matthew; Sherrill, Justin C.; et al. (24. 4. 2004), „Serializing token”, kernel mailing list, Arhivirano iz originala 05. 02. 2017. g., Pristupljeno 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, Pristupljeno 20 11. 2011  Proverite vrednost paramet(a)ra za datum: |access-date=, |year= / |date= mismatch (pomoć)
  15. ^ Dillon, Matthew (23. 4. 2009), „New libc malloc committed”, kernel mailing list, Pristupljeno 08. 8. 2011 
  16. ^ a b v g Vervloesem, Koen (21. 4. 2010), „DragonFly BSD 2.6: towards a free clustering operating system”, LWN.net, Pristupljeno 19. 11. 2011 
  17. ^ Economopoulos, Aggelos (16. 4. 2007), „A peek at the DragonFly Virtual Kernel”, LWN.net (part 1), Pristupljeno 08. 12. 2011 
  18. ^ Economopoulos, Aggelos (16. 4. 2007), „A peek at the DragonFly Virtual Kernel”, LWN.net (part 2), Pristupljeno 08. 12. 2011 
  19. ^ „HowTo DPorts”, DragonFly BSD, Pristupljeno 02. 12. 2013 
  20. ^ Weinem, Mark (2007), „10 years of pkgsrc”, NetBSD, Pristupljeno 22. 11. 2011  |chapter= ignorisan (pomoć)
  21. ^ Sherrill, Justin (30. 9. 2013), „Why dports?”, DragonFly BSD Digest, Arhivirano iz originala 30. 04. 2014. g., Pristupljeno 02. 12. 2013 
  22. ^ Sherrill, Justin (29. 9. 2013), „Any new packages?”, users mailing list, Pristupljeno 02. 12. 2013 
  23. ^ Buschmann, Jonathan (14. 3. 2007), „First Patch to get CARP on Dfly”, kernel mailing list, Pristupljeno 20. 11. 2011 
  24. ^ „CARP(4) manual page”, DragonFly On-Line Manual Pages, Pristupljeno 20. 11. 2011 
  25. ^ Dillon, Matthew (10. 10. 2007), „Re: HAMMER filesystem update – design document”, kernel mailing list, Pristupljeno 20. 11. 2011 
  26. ^ Larabel, Michael (07. 1. 2011), „Can DragonFlyBSD's HAMMER Compete With Btrfs, ZFS?”, Phoronix, Pristupljeno 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, Pristupljeno 22. 2. 2012 
  28. ^ „DragonFly Release 3.8”, DragonFly BSD, Pristupljeno 19. 6. 2014 
  29. ^ a b Mr (07. 1. 2010), „DragonFlyBSD with Matthew Dillon”, bsdtalk, Arhivirano iz originala (ogg) 25. 4. 2012. g., Pristupljeno 20. 11. 2011 
  30. ^ a b „DragonFly BSD diary”, DragonFly BSD, 07. 1. 2006, Pristupljeno 19. 11. 2011 
  31. ^ „DragonFly: Releases”, DragonFly BSD, Pristupljeno 19. 6. 2014 
  32. ^ Tigeot, Francois (31. 7. 2007), „KMS + i915 support now in -master”, users mailing list, Pristupljeno 02. 12. 2013 
  33. ^ a b Kerner, Sean Michael (25. 7. 2006), „DragonFly BSD 1.6 Cuts the Cord”, InternetNews, Arhivirano iz originala 05. 06. 2014. g., Pristupljeno 20. 11. 2011 
  34. ^ Townsend, Trent (18. 1. 2006), „A Quick Review of DragonFly BSD 1.4”, OSNews, Pristupljeno 16 11. 2011  Proverite vrednost paramet(a)ra za datum: |access-date= (pomoć)

Spoljašnje veze uredi