Release , eines Betriebssystems mit einem hybriden Kernel, im Jahr 2003 mit dem Ziel, eine alternative Entwicklungslinie zu FreeBSD 4.x. Zu den Besonderheiten von DragonFly BSD gehören das verteilte Versionierungssystem , die Unterstützung für das Booten von „virtuellen“ Systemkernen als Benutzerprozesse, die Möglichkeit der Daten- und Metadatencaching auf SSD-Speichern, kontextabhängige varianten symbolische Links, die Möglichkeit, Prozesse zu冻结, während deren Zustand auf der Festplatte gespeichert wird, ein hybrider Kernel, der leichtgewichtige Threads (LWKT) verwendet.
Haupt , hinzugefügt in DragonFlyBSD 5.6:
- Das System zur Verwaltung des virtuellen Speichers wurde modernisiert. Viele Subsysteme, die mit virtuellem Speicher und PMAP zusammenhängen, wurden neu geschrieben.
In vielen Bereichen wurde der Code von Sperren befreit, einschließlich der Funktionen m_page_wakeup, vm_hold und vm_unhold. Die Effizienz der Nutzung des CPU-Caches wurde durch die Reduzierung der Migration von VM-Objekten zwischen CPU-Kernen und die Verringerung der Overhead-Kosten bei der Verarbeitung von Ausnahmen (page-fault) für gemeinsam genutzte Speicherbereiche verbessert. Der Algorithmus zur Zuweisung von Seiten im Speicher wurde optimiert. Verzögerungen in der Funktion vm_page_alloc() wurden beseitigt. Die API vm_page_hash*() wurde hinzugefügt, die es ermöglicht, Abfragen ohne Sperren durchzuführen.Insgesamt ist es gelungen, deutlich . Zum Beispiel
wurde im buildkernel-Test die Ausführungszeit der Operationen im Kernbereich um 40 % verkürzt. Die Bandbreite stieg um 7 % bei der Verwendung der Haswell-CPU-Familie und um 14 % für Xeon. Im SELF-EXEC S/DI-Test im Vergleich zur vorherigen Version wurde eine Leistungssteigerung von 23 % für Haswell und 18 % für Xeon verzeichnet. Im Test
SELF-EXEC S/SH betrug die Steigerung entsprechend 28 % und 71 %, in SELF-EXEC D/DI — 23 % und 242 % (aufgrund der Verbesserung der Multithreading-Leistung), in SELF-EXEC D/SH um 24 % und 234 %, in FAULTZF um 17 % und 14 %, in DOCOMP um 22 % und 42 %,
in NATIVEKERNEL um 5,1 % und 8,1 %. - Der DRM-Treiber und der TTM-Speicherverwaltungsmanager für AMD-Grafikkarten wurden erheblich aktualisiert. Neue Ryzen-APUs werden nun unterstützt. Die Unterstützung des UEFI-Framebuffer wurde verbessert. In radeon/ttm wurde eine gegenseitige Blockade beseitigt, die sich negativ auf die Leistung auswirkte. Das Timing des Bootvorgangs wurde neu strukturiert, um Konflikte zwischen dem i915-Treiber und dem X-Server zu vermeiden. Der Aufruf DRM_IOCTL_GET_PCIINFO wurde hinzugefügt, um die Unterstützung von mesa/libdrm zu verbessern. Viele Fehler und Mängel wurden behoben.
- Der Synchronisierungscode im HAMMER2-Dateisystem wurde neu geschrieben, was die Leistung dieses Dateisystems erheblich gesteigert hat. Auch die Leistungsfähigkeit von sequentiellen Schreibvorgängen wurde erhöht.
Um die Robustheit gegenüber Abstürzen zu erhöhen, wurde eine Abhängigkeitsverfolgung hinzugefügt, um die Trennung von Verzeichnissen/Dateien während der Erstellung, Umbenennung oder Löschung zu vermeiden. Der Code zur Verarbeitung von Snapshots wurde überarbeitet, um Verzögerungen zu verringern und die Konsistenz des Snapshots zu garantieren. Die Handhabung gleichzeitiger Schreibvorgänge und des Cache-Flushs auf die Festplatte wurde verbessert. Die Implementierung des Befehls umount wurde optimiert. Die Informativität der Meldungen zu Integritätsverletzungen (CRC-Fehler) wurde erhöht.HAMMER2 wird als Standard-Root-Dateisystem empfohlen. Die Unterstützung für Cluster ist derzeit nicht verfügbar. Das Dateisystem HAMMER2 zeichnet sich durch Funktionen wie das separate Einhängen von Snapshots, schreibbare Snapshots, Quotas auf Verzeichnisebene, inkrementelles Mirroring und die Unterstützung verschiedener Datenkompressionsalgorithmen sowie Multi-Master-Mirroring mit Datenverteilung auf mehrere Hosts aus.
- Erste Unterstützung für das FUSE-Subsystem zur Erstellung von Dateisystemen im Benutzerspeicher wurde hinzugefügt.
- Die Leistung des Paketfilters PF auf Mehrkernsystemen wurde gesteigert.
- Die Unterstützung für die Schutzmechanismen SMAP (Supervisor Mode Access Prevention) und SMEP (Supervisor Mode Execution Prevention) wurde implementiert, sofern sie im CPU unterstützt werden. SMAP ermöglicht es, den Zugriff auf Benutzerdaten aus privilegiertem Code, der im Kernelmodus ausgeführt wird, zu blockieren. SMEP verhindert den Übergang vom Kernelmodus zur Ausführung von Code im Benutzermodus, was die Ausnutzung vieler Schwachstellen im Kernel verhindert (Shell-Code wird nicht ausgeführt, da er sich im Benutzermodus befindet).
- Code zum Blockieren wurde hinzugefügt. der MDS (Microarchitectural Data Sampling)-Klasse in Intel-Prozessoren. Um zu funktionieren, ist ein aktualisierter Mikrokode erforderlich. Der Schutz ist standardmäßig deaktiviert und wird über 'sysctl machdep.mds_mitigation=MD_CLEAR' aktiviert. Die Aktivierung führt zu einer zusätzlichen Verzögerung von etwa 250 ns beim Kontextwechsel zwischen Benutzer- und Kernelraum.
- Der Kernel wird standardmäßig mit dem retpoline-Schutz vor Spectre-Angriffen kompiliert.
- Viele der Systemwerkzeuge wurden auf die Verwendung von LibreSSL umgestellt.
- Die Versionen der Drittanbieterkomponenten wurden aktualisiert, darunter xz 5.2.4,
libarchive 3.3.3, libressl 2.9.1, openssh 8.0, ldns 1.7.0.
libedit 2019-03-24. Aus FreeBSD wurden evdev, makefs, ministat, libfetch übertragen.
dd. Aus OpenBSD wurden die Aufrufe reallocarray(), timing_safe*(), freezero(), dup3(), recallocarray(), aligned_alloc(), explicit_bzero() in libc übertragen. Der Compiler gcc-8 wird standardmäßig anstelle von gcc-5 für den Build verwendet.
Quelle: opennet.ru
