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.8:
- Das Hauptpaket enthält das Tool , das für den lokalen Aufbau und die Wartung eigener binärer DPort-Repositories gedacht ist. Parallelisierung des Aufbaus beliebiger Portränge in Abhängigkeit von der Abhängigkeitsstruktur wird unterstützt. Bei der Vorbereitung eines neuen Releases in DPort wurden auch zahlreiche Änderungen vorgenommen, die darauf abzielen, den Aufbau mehrerer abhängiger Pakete zu beschleunigen.
- In libc wurde ein effizienter Mechanismus zur Signalmaskierung implementiert, der malloc*() und ähnliche Funktionen vor Problemen schützt, die durch Signalunterbrechungen verursacht werden. Für die kurzfristige Blockierung und Freigabe von Signalen wurden die Funktionen sigblockall() und sigunblockall() vorgeschlagen, die ohne Systemaufrufe arbeiten. Darüber hinaus wurde in libc die Funktion strtok() für den Einsatz in Multithread-Anwendungen angepasst, sowie die Konstanten TABDLY, TAB0, TAB3 und die Funktion __errno_location zur Verbesserung der Unterstützung von dports hinzugefügt.
- Die Komponenten des DRM (Direct Rendering Manager) wurden mit dem Linux-Kernel 4.9 synchronisiert, wobei aus dem Kernel 4.12 einzelne Funktionen portiert wurden, die auf eine verbesserte Unterstützung von Wayland abzielen.
Der drm/i915 Treiber für Intel GPUs wurde mit dem Linux-Kernel 4.8.17 synchronisiert und enthält Code-Unterstützung für neue Chips (Skylake, Coffelake, Amber Lake, Whiskey Lake und Comet Lake) aus dem Kernel 5.4. - Die Algorithmen für das Paging des virtuellen Speichers wurden erheblich verbessert, wodurch Probleme mit der Benutzeroberflächenreaktivität bei speicherknappen Bedingungen beseitigt oder minimiert werden konnten. Probleme mit dem Einfrieren von Chrome/Chromium bei unzureichendem systematischen Speicher wurden behoben.
- Die Kernskalierung auf Systemen mit einer großen Anzahl von Prozessorkernen wurde verbessert. Die Zeit für Seitenanforderungen im virtuellen Speicher wurde verkürzt. Der SMP-Wettbewerb unter speicherknappen Bedingungen wurde reduziert. Die Effizienz des Aufrufs „open(… O_RDWR)“ wurde erhöht.
- Der Generator für Pseudo-Zufallszahlen im Kernel wurde überarbeitet. Der RDRAND-Treiber wurde angepasst, um Entropie von allen CPUs zu sammeln. Die Intensität
und die Größe des RDRAND-Fütterungsprozesses, der früher 2-3 % der CPU-Zeit im Leerlauf beanspruchte, wurde reduziert. - Neue Systemaufrufe realpath, getrandom und lwp_getname wurden hinzugefügt (letzterer ermöglicht die Implementierung von pthread_get_name_np).
- Die Unterstützung der Schutzmechanismen SMAP (Supervisor Mode Access Prevention) und SMEP (Supervisor Mode Execution Prevention) wurde hinzugefügt. SMAP ermöglicht das Blockieren des Zugriffs auf Daten im Benutzerspeicher aus privilegierter Kernel-Codeausführung. SMEP verhindert den Übergang vom Kernelmodus zur Ausführung von Code im Benutzermodus, was die Ausnutzung vieler Kernelanfälligkeiten blockiert (Shell-Code wird nicht ausgeführt, solange er sich im Benutzerspeicher befindet).
- Die sysctl-Variablen zur Konfiguration von Jail wurden überarbeitet. Es wurde die Möglichkeit hinzugefügt, nullfs und tmpfs aus dem Jail zu mounten.
- Ein Notfallmodus für das HAMMER2-Dateisystem wurde hinzugefügt, der im Wiederherstellungsprozess nach einem Ausfall verwendet werden kann. In diesem Modus ist das Zerstören von Snapshots beim Aktualisieren von Inodes vor Ort erlaubt (ermöglicht das Löschen von Dateien und Verzeichnissen bei fehlendem freien Speicherplatz, wenn der Copy-on-Write-Mechanismus nicht genutzt werden kann). Die Leistung wurde erheblich verbessert, dank einer Überarbeitung der Unterstützung für die Thread-Diskussion in HAMMER2. Der Pufferflush-Prozess wurde erheblich optimiert.
- Die Zuverlässigkeit und Leistung von TMPFS wurden erhöht. Die Effizienz bei unzureichendem freien Arbeitsspeicher im System wurde verbessert.
- Im Netzwerk-Stack für IPv4 wurde die Unterstützung von Präfixen /31 implementiert.).
Im tap wurde die Verarbeitung von ioctl SIOCSIFMTU verbessert, um MTU > 1500 zu unterstützen. Unterstützung für SIOCSIFINFO_IN6 und SO_RERROR hinzugefügt. - Der iwm-Treiber wurde mit FreeBSD synchronisiert und unterstützt drahtlose Intel-Chips (Unterstützung für iwm-9000 und iwm-9260 hinzugefügt).
- Kompatible Funktionen basename() und dirname() aus Linux wurden hinzugefügt, um die Portkompatibilität zu verbessern.
- fsck_msdosfs, sys/ttydefaults.h, AF_INET/AF_INET6 wurden aus FreeBSD in libc/getaddrinfo(), calendar(1), rcorder-visualize.sh übertragen. Funktionen aus math.h wurden aus OpenBSD übertragen.
- Die Versionen von Drittanbieterkomponenten wurden aktualisiert, einschließlich Binutils 2.34, Openresolv 3.9.2, DHCPCD 8.1.3. Standardmäßig wird der Compiler gcc-8 verwendet.
Quelle: opennet.ru
