DragonFly BSD - DragonFly BSD
![]() | |
![]() Zavaděč DragonFly BSD 4.2.3 | |
Vývojář | Matthew Dillon |
---|---|
Rodina OS | Unixový |
Pracovní stav | Proud |
Zdrojový model | Otevřený zdroj |
První vydání | 1.0 / 12. července 2004 |
Poslední vydání | 5.8.3 / 24. září 2020[1] |
Úložiště | ![]() |
K dispozici v | Angličtina |
Správce balíčků | bal |
Platformy | x86-64 |
Jádro typ | Hybridní |
Userland | BSD |
Výchozí uživatelské rozhraní | Unix shell |
Licence | BSD[2] |
Oficiální webové stránky | www |
DragonFly BSD je zdarma a open-source Unixový operační systém rozeklaný z FreeBSD 4.8. Matthew Dillon, an Amiga vývojář na konci 80. a na počátku 90. let a vývojář FreeBSD v letech 1994 až 2003, začal pracovat na DragonFly BSD v červnu 2003 a oznámil to na seznamech adresářů FreeBSD 16. července 2003.[3]
Dillon začal DragonFly ve víře, že techniky přijaly závitování a symetrické více procesů ve FreeBSD 5[4] vedlo by to ke špatnému výkonu a problémům s údržbou. Snažil se napravit tyto očekávané problémy v rámci projektu FreeBSD.[5] Kvůli konfliktům s dalšími vývojáři FreeBSD kvůli implementaci jeho nápadů[6] jeho schopnost přímo změnit kódová základna byl nakonec odvolán. Navzdory tomu projekty DragonFly BSD a FreeBSD stále spolupracují, sdílejí opravy chyb, aktualizace ovladačů a další vylepšení.
Jako logické pokračování řady FreeBSD 4.x se DragonFly významně odchýlil od FreeBSD, implementuje lehká vlákna jádra (LWKT), jádro předávání zpráv systém a KLADIVO souborový systém.[7] Mnoho designových konceptů bylo ovlivněno AmigaOS.[8]
Návrh systému
Jádro
The jádro vyvíjený subsystém zpráv je podobný těm, které se nacházejí v mikrokernelech, jako je Mach, i když je konstrukčně méně složitý. DragonFly však používá monolitický systém jádra.[9] Subsystém zasílání zpráv DragonFly má schopnost jednat synchronně nebo asynchronně a pokouší se využít tuto schopnost k dosažení nejlepšího možného výkonu v dané situaci.[10]
Podle vývojáře Matthew Dillon, probíhá pokrok v poskytování obou zařízení vstup výstup (I / O) a virtuální souborový systém (VFS) funkce zasílání zpráv, které umožní splnění zbývajících cílů projektu. Nová infrastruktura umožní migraci mnoha částí jádra do uživatelského prostoru; zde se budou snáze ladit, protože budou menšími izolovanými programy, místo aby byly malými částmi propletenými do většího bloku kódu. Migrace vybraného kódu jádra do uživatelského prostoru má navíc tu výhodu, že činí systém robustnějším; pokud dojde k chybě ovladače v uživatelském prostoru, nebude to mít za následek selhání jádra.[11]
Systémová volání jsou rozděleny do uživatelských zemí a verzí jádra a jsou zapouzdřeny do zpráv. To pomůže snížit velikost a složitost jádra přesunutím variant standardních systémových volání do uživatelské země vrstva kompatibility a pomáhají udržovat dopředu a dozadu kompatibilitu mezi verzemi DragonFly. Linux a další Unixový Podobně se migruje kód kompatibility s OS.[8]
Závitování
Jako podpora pro více architektury instrukční sady komplikuje symetrické více procesů (SMP) podpora,[6] DragonFly BSD nyní omezuje svou podporu na x86-64 plošina.[12] DragonFly původně běžel na x86 architektura, ale od verze 4.0 již není podporována. Od verze 1.10 podporuje DragonFly podprocesy 1: 1 (jedno vlákno jádra na jedno vlákno),[13] což je považováno za relativně jednoduché řešení se snadnou údržbou.[8] Zděděno z FreeBSD, DragonFly také podporuje multi-threading.[14]
V DragonFly každý procesor má svůj vlastní plánovač vláken. Po vytvoření jsou vlákna přiřazena procesorům a nikdy se preventivně nepřepínají z jednoho procesoru na druhý; jsou migrovány pouze průchodem přerušení mezi procesory (IPI) zpráva mezi zapojenými CPU. Plánování podprocesů mezi procesory se také dosahuje zasíláním asynchronních zpráv IPI. Jednou z výhod tohoto čistého rozčlenění podprocesového subsystému je, že jsou procesory integrovány mezipaměti v symetrické víceprocesorové systémy neobsahují duplikovaná data, což umožňuje vyšší výkon tím, že každému procesoru v systému dává možnost používat vlastní mezipaměť k ukládání různých věcí, na kterých lze pracovat.[8]
The LWKT subsystém se používá k rozdělení práce mezi více podprocesů jádra (například v síťovém kódu je jeden podproces na protokol na procesor), což snižuje konkurenci tím, že odstraňuje potřebu sdílet určité zdroje mezi různými úkoly jádra.[6]
Aby bylo možné bezpečně fungovat na víceprocesorových počítačích, musí být přístup ke sdíleným prostředkům (jako jsou soubory, datové struktury) serializováno aby se vlákna nebo procesy nepokoušely upravovat stejný zdroj současně. Aby se zabránilo více vláknům v přístupu nebo úpravě sdíleného prostředku současně, využívá DragonFly kritické sekce a serializace tokenů, aby se zabránilo souběžnému přístupu. Zatímco Linux i FreeBSD 5 využívají jemné granty mutex modely k dosažení vyššího výkonu na víceprocesorový systémy, DragonFly ne.[6] Donedávna také DragonFly zaměstnával spls, ale tyto byly nahrazeny kritickými úseky.
Hodně z jádra systému, včetně LWKT subsystém, subsystém zasílání zpráv IPI a nový alokátor paměti jádra, jsou bez zamykání, což znamená, že fungují bez použití mutexů, přičemž každý proces pracuje na jediném CPU. Kritické sekce se používají k ochraně před lokálními přerušeními, jednotlivě pro každý procesor, což zaručuje, že aktuálně prováděné vlákno nebude preempted.[13]
Serializace tokenů se používají k zabránění souběžných přístupů z jiných CPU a mohou být drženy současně více vlákny, což zajišťuje, že v daném okamžiku běží pouze jeden z těchto vláken. Blokovaná nebo spánková vlákna proto nebrání jiným vláknům v přístupu ke sdílenému prostředku na rozdíl od vlákna, které drží mutex. Mimo jiné použití serializačních tokenů zabrání mnoha situacím, které by mohly vést k zablokování a prioritní inverze při použití mutexů, stejně jako výrazné zjednodušení návrhu a implementace vícestupňového postupu, který by vyžadoval sdílení prostředku mezi více vlákny. Serializační tokenový kód se vyvíjí v něco docela podobného „Číst-kopírovat-aktualizovat „funkce nyní dostupná v Linuxu. Na rozdíl od současné implementace RCU v Linuxu je DragonFly implementována tak, že jsou ovlivněny pouze procesory soutěžící o stejný token, než všechny procesory v počítači.[15]
DragonFly přešel na víceprocesorový trezor alokátor desek, který pro úkoly přiřazování paměti nevyžaduje mutexy ani blokující operace.[16] Nakonec byl přenesen do standardní knihovny C v uživatelské zemi, kde nahradil implementaci malloc FreeBSD.[17]
Virtuální jádro
Od vydání 1.8 má DragonFly podobný virtualizační mechanismus Uživatelský režim Linux,[18] umožňující uživateli spustit jiné jádro v uživatelské zemi. Virtuální jádro (vkernel) je spuštěn ve zcela izolovaném prostředí s emulovanými síťovými a úložnými rozhraními, což zjednodušuje testování subsystémů jádra a funkcí klastru.[8][11]
Vkernel má dva důležité rozdíly od skutečného jádra: postrádá mnoho rutin pro řešení správy hardwaru na nízké úrovni a používá C standardní knihovna (libc) funguje místo implementací v jádře, kdykoli je to možné. Protože skutečné i virtuální jádro je kompilováno ze stejné kódové základny, znamená to efektivně, že rutiny závislé na platformě a opětovné implementace funkcí libc jsou ve zdrojovém stromu jasně odděleny.[19]
Vkernel běží na hardwarových abstrakcích poskytovaných skutečným jádrem. Mezi ně patří kqueue - časovač založený na konzole (mapován na virtuální terminál kde je spuštěn vkernel), obraz disku a ethernetové zařízení virtuálního jádra (VKE), tunelování všech paketů na hostitele klepněte na rozhraní.[20]
Správa balíčků
Software třetích stran je k dispozici na DragonFly jako binární balíčky prostřednictvím pkgng
nebo od domorodce sběr portů – DPorty.[21]
DragonFly původně používal Porty FreeBSD sbírka jako oficiální systém správy balíčků, ale počínaje vydáním 1.4 přepnuto na NetBSD pkgsrc systém, který byl vnímán jako způsob, jak snížit množství práce potřebné pro dostupnost softwaru třetích stran.[5][22] Nakonec zachování kompatibility s pkgsrc
Ukázalo se, že vyžaduje více úsilí, než se původně očekávalo, takže projekt vytvořil DPorts, což je překryvná vrstva Porty FreeBSD sbírka.[23][24]
Podpora CARP
Počáteční implementace Společný protokol redundance adres (běžně označované jako KAPR) byla dokončena v březnu 2007.[25] Od roku 2011 je podpora CARP integrována do DragonFly BSD.[26]
HAMMER souborové systémy
Po boku Systém souborů Unix, což je obvykle výchozí nastavení souborový systém na BSD, DragonFly BSD podporuje KLADIVO a KLADIVO 2 souborové systémy. HAMMER2 je výchozí systém souborů od verze 5.2.0.
HAMMER byl vyvinut speciálně pro DragonFly BSD, aby poskytoval funkčně bohatý, ale lépe navržený analog stále populárnějšího ZFS.[8][11][27] KLADIVO podporuje konfigurovatelnou historii systému souborů, snímky, kontrolní součet, deduplikace dat a další funkce typické pro souborové systémy svého druhu.[18][28]
HAMMER2, nástupce souborového systému HAMMER, je nyní považován za stabilní, standardně používaný a zaměřený na další vývoj. Plány na jeho rozvoj byly původně sdíleny v roce 2012.[29] V roce 2017 Dillon oznámil, že příští verze DragonFly BSD (5.0.0) bude obsahovat použitelnou, i když stále experimentální verzi HAMMER2, a popsané vlastnosti designu.[30] S vydáním po 5.0.0, verze 5.2.0, se HAMMER2 stal novým výchozím souborovým systémem.
devfs
V roce 2007 obdržel DragonFly BSD nový souborový systém zařízení (devfs), který dynamicky přidává a odebírá uzly zařízení, umožňuje přístup k zařízením podle cest připojení, rozpoznává disky podle sériová čísla a odstraňuje potřebu předem naplněných / dev
hierarchie souborového systému. Byl implementován jako Google Summer of Code 2009 projekt.[31]
Snímky aplikací
DragonFly BSD podporuje Amiga -styl rezidentní aplikace funkce: pořídí snímek velkého, dynamicky propojeného programu virtuální paměť prostor po načtení, což umožňuje budoucím instancím programu spouštět mnohem rychleji, než by tomu bylo jinak. Toto nahrazuje prelinkování schopnost, na které se pracovalo dříve v historii projektu, protože rezidentní podpora je mnohem efektivnější. Velké programy jako ty, které se nacházejí v Softwarová kompilace KDE s mnoha sdílené knihovny bude z této podpory těžit nejvíce.[32]
Vývoj a distribuce
Stejně jako u FreeBSD a OpenBSD, vývojáři DragonFly BSD pomalu nahrazují pre-funkční prototyp -styl C kód s modernějším, ANSI ekvivalenty. Podobně jako u jiných operačních systémů i verze DragonFly Sbírka překladačů GNU má vylepšení zvané Chránič zásobníku (ProPolice) ve výchozím nastavení povoleno a poskytuje určitou další ochranu proti přetečení zásobníku založené útoky. Ke dni 23. července 2005[Aktualizace], jádro již není s touto ochranou ve výchozím nastavení vytvořeno.[32]
Jako derivát FreeBSD zdědil DragonFly snadno použitelný integrovaný systém sestavení, který dokáže znovu sestavit celý základní systém ze zdroje pouze pomocí několika příkazů. Vývojáři DragonFly používají Git systém pro správu verzí pro správu změn DragonFly zdrojový kód. Na rozdíl od svého nadřazeného FreeBSD má DragonFly stabilní i nestabilní vydání v jediném zdrojovém stromu kvůli menší vývojářské základně.[6]
Stejně jako ostatní jádra BSD (a nejmodernějších operačních systémů) používá DragonFly vestavěný ladicí program jádra pomoci vývojářům najít chyby jádra. Kromě toho od října 2004[Aktualizace], ve výchozím nastavení je nainstalováno ladicí jádro, díky kterému jsou zprávy o chybách užitečnější pro sledování problémů souvisejících s jádrem, na úkor relativně malého množství místa na disku. Když je nainstalováno nové jádro, záložní kopie předchozího jádra a jeho modulů jsou zbaveny symbolů ladění, aby se dále minimalizovalo využití místa na disku.
Distribuční média
Operační systém je distribuován jako Živé CD a Živé USB (úplný X11 chuť k dispozici), která se zavádí do kompletního systému DragonFly.[18][31] Zahrnuje základní systém a kompletní sadu manuálových stránek a v budoucích verzích může obsahovat zdrojový kód a užitečné balíčky. Výhodou je, že s jedním CD mohou uživatelé nainstalovat software do počítače, použít celou sadu nástrojů k opravě poškozené instalace nebo předvést možnosti systému bez instalace. Denní snímky jsou k dispozici na hlavní stránce pro ty, kteří chtějí nainstalovat nejnovější verze DragonFly bez vytváření ze zdroje.
Stejně jako ostatní bezplatné BSD s otevřeným zdrojovým kódem i DragonFly je distribuován v rámci podmínek moderní verze Licence BSD.
Historie vydání

Verze | datum[33] | Změny |
---|---|---|
5.8 | 3. března 2020 | |
5.6 | 17. června 2019 |
|
5.4 | 3. prosince 2018 |
|
5.2 | 10. dubna 2018 | |
5.0 | 16. října 2017 |
|
4.8 | 27. března 2017 | |
4.6 | 2. srpna 2016 |
|
4.4 | 7. prosince 2015 | |
4.2 | 29. června 2015 |
|
4.0 | 25. listopadu 2014 |
|
3.8 | 4. června 2014 |
|
3.6 | 25. listopadu 2013 |
|
3.4 | 29.dubna 2013 |
|
3.2 | 2. listopadu 2012 |
|
3.0 | 22. února 2012 |
|
2.10 | 26.dubna 2011 |
|
2.8 | 30. října 2010 |
|
2.6 | 6. dubna 2010 |
|
2.4 | 16. září 2009 | |
2.2 | 17. února 2009 | |
2.0 | 20. července 2008 |
|
1.12 | 26. února 2008 | |
1.10 | 6. srpna 2007 |
|
1.8 | 30. ledna 2007 |
|
1.6 | 24. července 2006 |
|
1.4 | 7. ledna 2006 | |
1.2 | 8. dubna 2005 | |
1.0 | 12. července 2004 |
|
Viz také
- Porovnání operačních systémů BSD
- Porovnání operačních systémů s otevřeným zdrojovým kódem
- Porovnání jader operačního systému
Reference
- ^ „DragonFly BSD 5,8“. Vážka BSD. Citováno 25. září 2020.
- ^ „Licence DragonFly BSD“, DragonFly BSD, vyvoláno 17. ledna 2015
- ^ Dillon, Matthew (16. července 2003), „Oznámení DragonFly BSD!“, freebsd-aktuální seznam adresátů, vyvoláno 26. července 2007
- ^ Lehey, Greg (2001), Vylepšení implementace FreeBSD SMP (PDF), USENIX, vyvoláno 22. února 2012
- ^ A b Kerner, Sean Michael (10. ledna 2006), „Nový DragonFly vydán pro uživatele BSD“, Internetové zprávy, vyvoláno 20. listopadu 2011
- ^ A b C d E F Biancuzzi, Federico (8. července 2004), „Behind DragonFly BSD“, O'Reilly Media, vyvoláno 20. listopadu 2011
- ^ Loli-Queru, Eugenia (13. března 2004), „Rozhovor s Matthewem Dillonem z DragonFly BSD“, OSNews, vyvoláno 22. února 2012
- ^ A b C d E F Chisnall, David (15. června 2007), „DragonFly BSD: UNIX pro klastry?“, InformIT, vyvoláno 22. listopadu 2011
- ^ Dillon, Matthew (22. srpna 2006), „Re: Kolik mikrokernelů?“, seznam adresářů jádra, vyvoláno 14. září 2011
- ^ Hsu, Jeffery M. (13. března 2004). Operační systém DragonFly BSD (PDF). AsiaBSDCon 2004. Taipei, Taiwan. Citováno 20. listopadu 2011.
- ^ A b C Andrews, Jeremy (6. srpna 2007), „Interview: Matthew Dillon“, KernelTrap, archivovány z originál dne 15. května 2011
- ^ „Výkon DragonFly BSD MP je výrazně vylepšen“, OSNews, 16. listopadu 2011, vyvoláno 19. listopadu 2011
- ^ A b Luciani, Robert (24. května 2009), M: N závitování v DragonflyBSD (PDF), BSDCon, archivovány z originál (PDF) dne 23. prosince 2010
- ^ Sherrill, Justin (11. ledna 2004), Vyplácí se již, vyvoláno 20. listopadu 2011
- ^ Pistritto, Joe; Dillon, Matthew; Sherrill, Justin C .; et al. (24. dubna 2004), "Serializační token", seznam adresářů jádra, archivovány z originál dne 15. dubna 2013, vyvoláno 20. března 2012
- ^ Bonwick, Jeff; Adams, Jonathan (3. ledna 2002), Magazines and Vmem: Extension the Slab Allocator to Many CPUs and Arbitrary Resources, USENIX, vyvoláno 20. listopadu 2011
- ^ Dillon, Matthew (23. dubna 2009), "Nový libc malloc spáchán", seznam adresářů jádra, vyvoláno 8. srpna 2011
- ^ A b C d Vervloesem, Koen (21. dubna 2010), „DragonFly BSD 2.6: směrem ke svobodnému operačnímu systému s klastrováním“, LWN.net, vyvoláno 19. listopadu 2011
- ^ Economopoulos, Aggelos (16. dubna 2007), „Nahlédnutí do virtuálního jádra DragonFly“, LWN.net (část 1), vyvoláno 8. prosince 2011
- ^ Economopoulos, Aggelos (16. dubna 2007), „Nahlédnutí do virtuálního jádra DragonFly“, LWN.net (část 2), vyvoláno 8. prosince 2011
- ^ „HowTo DPorts“, DragonFly BSD, vyvoláno 2. prosince 2013
- ^ Weinem, Mark (2007). "10 let pkgsrc". NetBSD. Joerg Sonnenberger o pkgsrc na DragonFly BSD a jeho vývojových projektech pkgsrc. Citováno 22. listopadu 2011.
- ^ Sherrill, Justin (30. září 2013), „Proč se dportuje?“, DragonFly BSD Digest, vyvoláno 2. prosince 2011
- ^ Sherrill, Justin (29. září 2013), „Nějaké nové balíčky?“, seznam uživatelů, vyvoláno 2. prosince 2013
- ^ Buschmann, Jonathan (14. března 2007), „První Patch pro získání CARP na Dfly“, seznam adresářů jádra, vyvoláno 20. listopadu 2011
- ^ "Ruční stránka CARP (4)", Ruční stránky DragonFly online, vyvoláno 20. listopadu 2011
- ^ Dillon, Matthew (10. října 2007), „Re: Aktualizace souborového systému HAMMER - dokument návrhu“, seznam adresářů jádra, vyvoláno 20. listopadu 2011
- ^ Larabel, Michael (7. ledna 2011), „Mohou HAMMER společnosti DragonFlyBSD soutěžit s Btrfs, ZFS?“, Phoronix, vyvoláno 20. listopadu 2011,
HAMMER se jeví jako velmi zajímavý souborový systém BSD. Není to sice tak rychlé jako souborový systém ZFS na BSD, ale jedná se také o původní souborový systém pro projekt DragonFlyBSD, spíše než o port z OpenSolaris. Nejen, že je HAMMER obecně rychlejší než běžný souborový systém UFS, ale má také mnohem větší sadu funkcí.
- ^ Dillon, Matthew (8. února 2012), „DESIGNový dokument pro HAMMER2 (aktualizace 8. února 2012)“, uživatelů, vyvoláno 22. února 2012
- ^ Dillon, Matthew (18. srpna 2017), „Další vydání DFly bude mít počáteční implementaci HAMMER2“, uživatelů, vyvoláno 3. července 2018
- ^ A b Pane (7. ledna 2010), „DragonFlyBSD s Matthewem Dillonem“, bsdtalk, archivovány z originál (ogg ) dne 25. dubna 2012, vyvoláno 20. listopadu 2011
- ^ A b „Deník DragonFly BSD“, DragonFly BSD, 7. ledna 2006, vyvoláno 19. listopadu 2011
- ^ „DragonFly: zprávy“, DragonFly BSD, vyvoláno 19. června 2014
- ^ Tigeot, Francois (31. července 2007), „Podpora KMS + i915 nyní ve verzi -master“, seznam uživatelů, vyvoláno 2. prosince 2013
- ^ Matthew Dillon (4. června 2009). ""Re: DragonFly-2.3.1.165.g25822 master sys / dev / disk / ahci Makefile TODO ahci.c ahci.h ahci_attach.c ahci_cam.c ahci_dragonfly.c ahci_dragonfly.h atascsi.h"".
- ^ A b Kerner, Sean Michael (25. července 2006), „DragonFly BSD 1.6 odstřihne šňůru“, Internetové zprávy, vyvoláno 20. listopadu 2011
- ^ Townsend, Trent (18. ledna 2006), „Rychlý přehled DragonFly BSD 1.4“, OSNews, vyvoláno 16. listopadu 2011