DragonFly BSD

DragonFly BSD ist ein freies Unix ähnliches Betriebssystem geschaffen als eine Gabel von FreeBSD 4.8. Matthew Dillon, ein Entwickler von Amiga gegen Ende der 1980er Jahre und Anfang der 1990er Jahre und eines Entwicklers von FreeBSD zwischen 1994 und 2003, hat Arbeit an DragonFly BSD im Juni 2003 begonnen und hat es auf den Adressenlisten von FreeBSD am 16. Juli 2003 bekannt gegeben.

Dillon hat DragonFly im Glauben angefangen, dass die Methoden und Techniken, die für die einfädelnde und symmetrische Mehrverarbeitung in FreeBSD 5 annehmen werden, zu schlechter Systemleistung und Ursache-Wartungsschwierigkeiten führen würden. Er hat sich bemüht, diese verdächtigten Probleme innerhalb des Projektes von FreeBSD zu korrigieren. Wegen andauernder Konflikte mit anderen Entwicklern von FreeBSD über die Durchführung seiner Ideen wurde seine Fähigkeit, den Code von FreeBSD direkt zu ändern, schließlich widerrufen. Trotzdem arbeiten DragonFly BSD und Projekte von FreeBSD noch zusammen, üble Programmfehler-Lagen, Fahrer-Aktualisierungen und andere Systemverbesserungen zu einander beitragend.

Beabsichtigt, um die logische Verlängerung von FreeBSD 4.x Reihe zu sein, ist die Entwicklung von DragonFly bedeutsam von FreeBSD, einschließlich einer neuen Leichten Gewicht-Kernfaden-Durchführung (LWKT), eines leichten Gewicht-Systems der Häfen/Nachrichtenübermittlung und an der Eigenschaft reichen HAMMER-Dateisystems abgewichen. Viele für DragonFly geplante Konzepte wurden von AmigaOS Betriebssystem begeistert.

Systemdesign

Kern

Wie die meisten modernen Kerne ist DragonFly eine Hybride, Eigenschaften sowohl monolithischen als auch Mikrokerne, wie die Nachricht vorübergehende Fähigkeit zu Mikrokernen enthaltend, die größere Teile des OS ermöglichen, aus geschütztem Gedächtnis einen Nutzen zu ziehen, sowie die Geschwindigkeit von monolithischen Kernen für bestimmte kritische Aufgaben behalten. Das Nachrichtenübermittlungssubsystem, das wird entwickelt, ist denjenigen ähnlich, die in Mikrokernen wie Mach gefunden sind, obwohl es durch das Design weniger kompliziert ist. Das Nachrichtenübermittlungssubsystem von DragonFly ist in der Lage, entweder auf eine gleichzeitige oder auf asynchrone Mode zu handeln und versucht, diese Fähigkeit zu verwenden, die beste in jeder gegebenen Situation mögliche Leistung zu erreichen.

Gemäß dem Entwickler Matthew Dillon, Fortschritt, der wird macht sowohl Gerät-Eingang/Produktion (Eingabe/Ausgabe) als auch Nachrichtenübermittlungsfähigkeiten des virtuellen Dateisystems (VFS) zur Verfügung stellen, die dem Rest der Projektabsichten ermöglichen werden, entsprochen zu werden. Die neue Infrastruktur wird vielen Teilen des Kerns erlauben, in userspace abgewandert zu werden; hier wird bei ihnen leichter die Fehler beseitigt, weil sie kleinere, isolierte Programme sein werden, anstatt kleine in einem größeren Klotz des Codes umschlungene Teile zu sein. Zusätzlich hat die Wanderung des ausgesuchten Kerncodes in userspace den Vorteil, das System robuster zu machen; wenn ein userspace Fahrer abstürzt, wird es den Kern nicht zertrümmern.

Systemanrufe werden in userland und Kernversionen gespalten und in Nachrichten kurz zusammengefasst. Das wird helfen, die Größe und Kompliziertheit des Kerns durch bewegende Varianten von Standardsystemanrufen in eine userland Vereinbarkeitsschicht zu reduzieren, und Hilfe erhält vorwärts und umgekehrt Vereinbarkeit zwischen Versionen von DragonFly aufrecht. Linux und anderer Unix ähnlicher OS Vereinbarkeitscode werden ähnlich abgewandert. Vielfache Beispiele der heimischen userland in Gefängnissen geschaffenen Vereinbarkeitsschicht konnten Funktionalität von DragonFly geben, die dem ähnlich ist, das in UML gefunden ist, obwohl die Virtualisierung von DragonFly nicht verlangt, dass spezielle Fahrer mit der echten Hardware auf dem Computer kommunizieren.

Das Einfädeln

Da die Unterstützung für vielfache Verarbeiter-Architekturen symmetrische Mehrverarbeitung (SMP) Unterstützung, DragonFly kompliziert, beschränkt BSD seine unterstützten Plattformen auf x86 und x86-64, sowohl mit dem einzelnen Verarbeiter als auch mit den SMP Modellen. Seit der Version 1.10 unterstützt DragonFly 1:1 userland einfädelnd (ein Kernfaden für jeden Userland-Faden), der, wie man sieht, als ein relativ einfacher und leichtes Lösung aufrechterhält. Geerbt von FreeBSD unterstützt DragonFly auch SMP importierte Nebenläufigkeit.

In DragonFly werden Fäden zu Zentraleinheiten durch das Design geschlossen, und jeder Verarbeiter hat seinen eigenen LWKT Planer. Fäden werden von einem Verarbeiter bis einen anderen nie Vorkaufs-geschaltet; sie werden nur durch den Übergang einer Nachricht der Zwischenverarbeiter-Unterbrechung (IPI) zwischen den beteiligten Zentraleinheiten abgewandert. Zwischenverarbeiter-Faden-Terminplanung wird auch durch das Senden asynchroner IPI Nachrichten vollbracht. Ein Vorteil für diese saubere Bereichsbildung des einfädelnden Subsystems besteht darin, dass die geheimen Lager an Bord der Verarbeiter in Symmetrischen Mehrverarbeiter-Systemen kopierte Daten nicht enthalten, höhere Leistung durch das Geben jedes Verarbeiters im System die Fähigkeit berücksichtigend, sein eigenes geheimes Lager zu verwenden, um verschiedene Dinge zu versorgen, daran zu arbeiten.

Das LWKT Subsystem wird verwendet, um Arbeit unter vielfachen Kernfäden zu verteilen (zum Beispiel im Netzwerkanschlusscode es gibt einen Faden pro Protokoll pro Verarbeiter), Konkurrenz durch das Entfernen des Bedürfnisses reduzierend, bestimmte Mittel unter verschiedenen Kernaufgaben zu teilen.

Geteilter Mittel-Schutz

Um sicher auf Mehrverarbeiter-Maschinen zu laufen, muss der Zugang zu geteilten Mitteln (wie Dateien, Datenstrukturen) in Fortsetzungen veröffentlicht werden, so dass Fäden oder Prozesse nicht versuchen, dieselbe Quelle zur gleichen Zeit zu modifizieren. Um vielfache Fäden davon abzuhalten, auf eine geteilte Quelle gleichzeitig zuzugreifen oder sie zu modifizieren, verwendet DragonFly kritische Abteilungen und in Fortsetzungen veröffentlichende Jetons, um gleichzeitigen Zugang zu verhindern. While sowohl Linux als auch FreeBSD 5 verwenden feinkörnige mutex Modelle, um höhere Leistung auf Mehrverarbeiter-Systemen zu erreichen, DragonFly tut nicht. Bis neulich hat DragonFly auch spls verwendet, aber diese wurden durch kritische Abteilungen ersetzt.

Viel Kern des Systems, einschließlich des LWKT Subsystems, des IPI Nachrichtenübermittlungssubsystems und des neuen Kernspeicherverteilers, ist lockless, bedeutend, dass sie arbeiten, ohne mutexes zu verwenden, und auf einer Basis pro Zentraleinheit funktionieren. Kritische Abteilungen werden verwendet, um gegen lokale Unterbrechungen zu schützen und auf einer Basis pro Zentraleinheit zu funktionieren, versichernd, dass ein Faden, der zurzeit wird durchführt, nicht durch Vorkaufsrecht erworben wird.

In Fortsetzungen veröffentlichende Jetons werden verwendet, um gleichzeitige Zugänge an anderen Zentraleinheiten zu verhindern, und können gleichzeitig durch vielfache Fäden gehalten werden, sicherstellend, dass nur ein jener Fäden zu jeder vorgegebenen Zeit laufen. Blockierte oder schlafende Fäden halten deshalb andere Fäden nicht davon ab, auf die geteilte Quelle verschieden von einem Faden zuzugreifen, der einen mutex hält. Unter anderem verhindert der Gebrauch, Jetons in Fortsetzungen zu veröffentlichen, viele der Situationen, die auf tote Punkte und Vorzugsinversionen hinauslaufen konnten, als sie mutexes verwendet haben, sowie außerordentlich das Design und die Durchführung eines Vielschritt-Verfahrens vereinfacht haben, das verlangen würde, dass eine Quelle unter vielfachen Fäden geteilt wird. Der in Fortsetzungen veröffentlichende Scheincode entwickelt sich zu etwas ziemlich Ähnlichem der in Linux jetzt verfügbaren Eigenschaft "von Read-Copy-Update". Verschieden von der RCU aktuellen Durchführung von Linux wird DragonFly solch durchgeführt, dass nur Verarbeiter, die sich um denselben Jeton bewerben, aber nicht alle Verarbeiter im Computer betroffen werden.

DragonFly verwendet einen Plattenverteiler, der weder mutexes noch blockierende Operationen wegen Speicheranweisungsaufgaben verlangt und verschieden vom Code es ersetzt hat, ist sicherer Mehrverarbeiter. Es wurde schließlich getragen, um außerhalb des Kerns in einem Ersatz zum alten userland malloc Durchführung verwertet zu werden.

Virtueller Kern

Seit der Ausgabe 1.8 hat DragonFly einen neuen UML ähnlichen Virtualisierungsmechanismus, erlaubend, einen anderen Kern im userland zu führen. Der virtuelle Kern (vkernel) wird in der völlig isolierten Umgebung mit dem wettgeeiferten Netz und den Lagerungsschnittstellen geführt, so Prüfung von Kernsubsystemen und das Sammeln von Eigenschaften vereinfachend.

Der vkernel hat zwei wichtige Unterschiede zum echten Kern: Es hat an vielen Routinen Mangel, um sich mit dem auf niedriger Stufe Hardware-Management zu befassen, und es verwendet C Standardbibliothek (libc) Funktionen im Platz von Durchführungen im Kern, wo auch immer möglich. Sowohl als der echte als auch als virtuelle Kern werden von derselben Codebasis kompiliert, das bedeutet effektiv, dass von der Plattform abhängige Routinen und Wiederdurchführungen von Libc-Funktionen klar in einem Quellbaum getrennt werden.

Die virtualized Plattform vkernel Läufe darauf wird oben auf durch den echten Kern zur Verfügung gestellten Abstraktionen auf höchster Ebene gebaut. Diese Abstraktionen schließen den mit Sitz in kqueue Zeitmesser, die Konsole ein (kartografisch dargestellt zum virtuellen Terminal, wo vkernel durchgeführt wird), das Plattenimage und der virtuelle Kern ethernet Gerät (VKE), tunneling alle Pakete zur Klaps-Schnittstelle des Gastgebers.

Paket-Management

DragonFly hat vorher das Hafen-System von FreeBSD für die Drittsoftware verwendet, aber seit der 1.4 Ausgabe ist der pkgsrc von NetBSD das offizielle Paket-Verwaltungssystem. Mit werden die Entwickler von DragonFly der Notwendigkeit größtenteils befreit, eine Vielzahl von Drittprogrammen aufrechtzuerhalten, während sie noch Zugang zu aktuellen Anwendungen haben. Die pkgsrc Entwickler ziehen auch aus dieser Einordnung einen Nutzen, weil sie hilft, die Beweglichkeit des Codes zu sichern.

KARPFEN-Unterstützung

Die anfängliche Durchführung des Allgemeinen Adressüberfülle-Protokolls (allgemein verwiesen als KARPFEN) dazu wurde im März 2007 beendet. Bezüglich 2011 wird KARPFEN-Unterstützung in DragonFly BSD integriert.

HAMMER-Dateisystem

Im Vergleich zum Unix Dateisystem, das normalerweise das Verzug-Dateisystem auf BSDs, DragonFly BSD Unterstützungs-HAMMER-Dateisystem ist. Es wurde spezifisch für DragonFly BSD entwickelt, um einem an der Eigenschaft reichen noch besser entworfene Entsprechung von dann immer populärerem ZFS zur Verfügung zu stellen.

HÄMMERN SIE unterstützt konfigurierbare Dateisystemgeschichte, Schnellschüsse, checksumming, Datendubletteneliminierung und andere für Dateisysteme seiner Art typische Eigenschaften. Obwohl seine Leistung zurzeit außer den ähnlichen Dateisystemen wie ZFS oder btrfs ist, wird er als eine interessante und perspektivische Auswahl erkannt.

Die folgende Generation des HAMMER-Dateisystems (HAMMER2) wird von Dillon entwickelt, der seine Absicht festgesetzt hat, sich auf dieses Projekt für das ganze Jahr 2012 zu konzentrieren., der hingebungsvolle Zweig im Quellcodebehältnis von DragonFly wurde geschaffen. Der frühste verwendbare Staat des Dateisystems wird vor dem Juli 2012 erwartet; die Endausgabe wird für 2013 geplant.

devfs

2007 erlaubt DragonFly BSD hat ein neues Gerät-Dateisystem (devfs) erhalten, der dynamisch hinzufügt und Gerät-Knoten entfernt, auf Geräte durch Verbindungspfade zuzugreifen, erkennt Laufwerke durch Seriennummern und entfernt das Bedürfnis nach der vorbevölkerten Dateisystemhierarchie. Es wurde als ein Google Sommer des Codes '2009-Projekt durchgeführt.

Anwendungsschnellschüsse

DragonFly BSD unterstützt Amiga-artige Residentanwendungseigenschaft: Es nimmt einen Schnellschuss eines virtuellen Speicherraums eines großen, dynamisch verbundenen Programms nach dem Laden, zukünftigen Beispielen des Programms erlaubend, viel schneller anzufangen, als es sonst haben würde. Das ersetzt die sich vorverbindende Fähigkeit, die auf früher in der Geschichte des Projektes gearbeitet wurde, weil die Residentunterstützung viel effizienter ist. Große Programme wie diejenigen, die in der KDE Softwarekompilation mit vielen geteilten Bibliotheken gefunden sind, werden aus dem grössten Teil dieser Unterstützung einen Nutzen ziehen.

Entwicklung und Vertrieb

Als mit FreeBSD und OpenBSD, den Entwicklern von DragonFly ersetzen BSD K&R Stil C Code mit dem moderneren, ANSI Entsprechungen langsam. Ähnlich anderen Betriebssystemen hat die Version von DragonFly der GNU-Bearbeiter-Sammlung eine Erhöhung genannt den Stapel zerschlagenden Beschützer (ProPolice) ermöglicht standardmäßig, etwas zusätzlichen Schutz gegen die Pufferüberschwemmung zur Verfügung zu stellen, hat Angriffe gestützt. Es sollte bemerkt werden, dass der Kern mit diesem Schutz standardmäßig nicht mehr gebaut wird.

Eine Ableitung von FreeBSD seiend, hat DragonFly geerbt ein integrierter gebrauchsfreundlicher bauen System, das das komplette Grundsystem von der Quelle mit nur einigen Befehlen wieder aufbauen kann. Die Entwickler von DragonFly verwenden das Schwachkopf-Versionsregelsystem, um Änderungen zum Quellcode von DragonFly zu führen. Verschieden von seinem ElternteilfreeBSD hat DragonFly sowohl stabile als auch nicht stabile Ausgaben in einem einzelnen Quellbaum wegen einer kleineren Entwickler-Basis.

Wie die anderen BSD Kerne (und diejenigen von den meisten modernen Betriebssystemen) verwendet DragonFly ein eingebautes Kerntesthilfeprogramm, um den Entwicklern zu helfen, Kernwanzen zu finden. Außerdem, wird ein Fehlersuchprogramm-Kern, der Programmfehler-Berichte nützlicher macht, um kernzusammenhängende Probleme ausfindig zu machen, standardmäßig auf Kosten einer relativ kleinen Menge des Speicherplatzes installiert. Wenn ein neuer Kern installiert wird, wird die Aushilfskopie des vorherigen Kerns und seiner Module ihrer Beseitigen-Symbole beraubt, um weiter Speicherplatz-Gebrauch zu minimieren.

Vertriebsmedien

Das Betriebssystem wird als eine Lebende CD und Lebender USB verteilt (voller X11 Geschmack verfügbar), der in ein ganzes System von DragonFly startet. Es schließt das Grundsystem und einen ganzen Satz von manuellen Seiten ein, und kann Quellcode und nützliche Pakete in zukünftigen Versionen einschließen. Der Vorteil davon besteht darin, dass mit einer einzelnen CD Sie die Software auf einen Computer installieren können, verwenden Sie ein volles Instrumentarium, um eine beschädigte Installation zu reparieren, oder die Fähigkeiten zum System zu demonstrieren, ohne sie zu installieren. Tägliche Schnellschüsse sowohl für i386 als auch für x86-64 Architekturen sind von der Master-Seite für diejenigen verfügbar, die die neusten Versionen von DragonFly installieren wollen, ohne von der Quelle zu bauen.

Wie die andere freie offene Quelle BSDs wird DragonFly in Form von der modernen Version der BSD-Lizenz verteilt.

Ausgabe-Geschichte

Siehe auch

  • Vergleich von BSD Betriebssysteme

Aileen Stanley / Kombi-Graben-Aufzeichnungen
Impressum & Datenschutz