rilascio , un sistema operativo con kernel ibrido, nel 2003 con l'obiettivo di sviluppare un'alternativa alla serie FreeBSD 4.x. Tra le caratteristiche di DragonFly BSD si possono evidenziare un file system versione distribuita , il supporto per il caricamento di "kernel virtuali" del sistema come processi utente, la possibilità di caching dei dati e dei metadati del FS su SSD, link simbolici variabili contestuali, la possibilità di congelare i processi mantenendo il loro stato su disco, un kernel ibrido che utilizza thread leggeri (LWKT).
Principali , aggiunti in DragonFlyBSD 5.6:
- È stata effettuata un'aggiornamento del sistema di gestione della memoria virtuale. Molti sottosistemi legati alla memoria virtuale e al PMAP sono stati riscritti.
In molte aree del codice sono state rimosse le sezioni critiche, comprese le funzioni m_page_wakeup, vm_hold e vm_unhold. È stata migliorata l'efficienza dell'uso della cache del processore riducendo la migrazione degli oggetti VM tra i core CPU e diminuendo i costi associati alla gestione delle eccezioni (page-fault) per le aree di memoria condivise. È stato migliorato l'algoritmo di allocazione delle pagine di memoria. Sono stati eliminati i ritardi nel funzionamento della funzione vm_page_alloc(). È stata aggiunta l'API vm_page_hash*(), che consente di eseguire interrogazioni senza blocchi.Di conseguenza, siamo riusciti a . Ad esempio,
nel test buildkernel, il tempo di esecuzione delle operazioni nel kernel è stato ridotto del 40%. La capacità di elaborazione è aumentata del 7% con la CPU della serie Haswell e del 14% per Xeon. Nel test SELF-EXEC S/DI rispetto alla versione precedente, si è notato un incremento delle prestazioni del 23% per Haswell e del 18% per Xeon. Nel test
SELF-EXEC S/SH rispettivamente 28% e 71%, in SELF-EXEC D/DI — 23% e 242% (grazie al miglioramento della gestione dei thread), in SELF-EXEC D/SH al 24% e 234%, in FAULTZF al 17% e 14%, in DOCOMP al 22% e 42%,
in NATIVEKERNEL al 5,1% e 8,1%; - Driver DRM e gestore della memoria video TTM per schede grafiche AMD notevolmente aggiornati. Aggiunta la supporto per i nuovi APU Ryzen. Migliorato il supporto del framebuffer UEFI. In radeon/ttm è stata risolta una deadlock che influiva negativamente sulle prestazioni. È stata effettuata una rifattorizzazione nell'assegnazione dei ritardi durante il caricamento per evitare conflitti tra il driver i915 e il server X. Aggiunto il richiamo di DRM_IOCTL_GET_PCIINFO per migliorare il supporto di mesa/libdrm. Risolti numerosi errori e problemi;
- Riscritto il codice di sincronizzazione nel file system HAMMER2, il che ha consentito di migliorare significativamente le prestazioni di questo FS. È stata inoltre aumentata l'efficienza delle operazioni di scrittura sequenziale.
Per aumentare la resilienza ai crash, è stato aggiunto il tracciamento delle dipendenze per escludere la divisione di directory/file durante le operazioni di creazione, rinominazione o eliminazione. Il codice per la gestione degli snapshot è stato rielaborato per ridurre i ritardi e garantire la coerenza dello snapshot. È stata migliorata la gestione delle operazioni di scrittura simultanee e dello svuotamento della cache su disco (flush). È stata migliorata l'implementazione dell'operazione umount. Maggiore informatività nei messaggi di errore di integrità (CRC error).HAMMER2 è raccomandato come file system radice predefinito. Il supporto per la clustering non è ancora disponibile. Il file system HAMMER2 è caratterizzato da funzionalità come il montaggio separato degli snapshot, snapshot scrivibili, quote a livello di directory, mirroring incrementale, supporto per diversi algoritmi di compressione dei dati, mirroring multi-master con distribuzione dei dati su più host.
- È stato aggiunto il supporto iniziale per il sottosistema FUSE per creare file system nello spazio utente.
- Migliorata la performance del filtro pacchetti PF su sistemi multicore.
- È stata implementata la supporto per i meccanismi di protezione SMAP (Supervisor Mode Access Prevention) e SMEP (Supervisor Mode Execution Prevention) quando supportati dalla CPU. SMAP consente di bloccare l'accesso ai dati nello spazio utente dal codice privilegiato eseguito a livello di kernel. SMEP impedisce il passaggio dal kernel all'esecuzione di codice a livello utente, bloccando così molte vulnerabilità nel kernel (il shellcode non verrà eseguito poiché si trova nello spazio utente);
- Aggiunto codice per bloccare classe MDS (Microarchitectural Data Sampling) nei processori Intel. Per funzionare è necessario avere un microcodice aggiornato. Per impostazione predefinita, la protezione è disattivata e si attiva tramite 'sysctl machdep.mds_mitigation=MD_CLEAR'. L'attivazione comporta un ritardo aggiuntivo di circa 250ns durante il passaggio di contesto tra spazio utente e kernel;
- Il kernel è compilato per impostazione predefinita con la protezione retpoline contro gli attacchi Spectre.
- Molti strumenti del sistema di base sono stati convertiti per utilizzare LibreSSL;
- Le versioni dei componenti di terze parti sono state aggiornate, inclusi xz 5.2.4,
libarchive 3.3.3, libressl 2.9.1, openssh 8.0, ldns 1.7.0,
libedit 2019-03-24. Sono stati trasferiti da FreeBSD evdev, makefs, ministat, libfetch,
dd. Da OpenBSD sono stati trasferiti nelle libc le chiamate a reallocarray(), timing_safe*(), freezero(), dup3(), recallocarray(), aligned_alloc(), explicit_bzero(). Per impostazione predefinita, il compilatore utilizzato per la build è gcc-8 invece di gcc-5.
Fonte: opennet.ru
