il rilascio , un sistema operativo con un nucleo ibrido, nel 2003 con l'obiettivo di uno sviluppo alternativo della serie FreeBSD 4.x. Tra le caratteristiche di DragonFly BSD, si può evidenziare il sistema di file distribuito e versionato , il supporto per il boot di "nuclei virtuali" del sistema come processi utente, la possibilità di memorizzare nella cache i dati e i metadati del FS su unità SSD, considerare le link simbolici varianti contestuali, la possibilità di congelare i processi mantenendo il loro stato su disco, un nucleo ibrido, che utilizza thread leggeri (LWKT).
Principali , aggiunti in DragonFlyBSD 5.6:
- È stata effettuata un'aggiornamento del sistema di gestione della memoria virtuale. Riscritte molte sottosistemi legati alla memoria virtuale e PMAP.
In molte parti del codice sono state eliminate le serrature, comprese le funzioni m_page_wakeup, vm_hold e vm_unhold. È stata aumentata l'efficienza dell'uso della cache del processore riducendo la migrazione degli oggetti VM tra i core CPU e abbattendo i costi legati alla gestione delle eccezioni (page-fault) per le aree di memoria condivise. È stato migliorato l'algoritmo di allocazione delle pagine di memoria. Sono state eliminate le attese nella funzione vm_page_alloc(). È stata aggiunta l'API vm_page_hash*(), che consente di eseguire selezioni senza serrature.Di conseguenza, è stato possibile migliorare notevolmente . Ad esempio,
nel test buildkernel il tempo di esecuzione delle operazioni nel kernel è stato ridotto del 40%. La larghezza di banda è aumentata del 7% utilizzando la CPU della famiglia Haswell e del 14% per Xeon. Nel test SELF-EXEC S/DI rispetto alla versione precedente si osserva un guadagno di prestazioni del 23% per Haswell e del 18% per Xeon. Nel test
SELF-EXEC S/SH rispettivamente del 28% e 71%, in SELF-EXEC D/DI – 23% e 242% (grazie al miglioramento delle prestazioni multithreading), in SELF-EXEC D/SH del 24% e 234%, in FAULTZF del 17% e 14%, in DOCOMP del 22% e 42%,
in NATIVEKERNEL del 5.1% e 8.1%; - È stato significativamente aggiornato il driver DRM e il gestore della memoria video TTM per le schede grafiche AMD. È stato aggiunto il supporto per i nuovi APU Ryzen. È stato migliorato il supporto per il framebuffer UEFI. In radeon/ttm è stata eliminata una condizione di deadlock che influiva negativamente sulle prestazioni. Sono state effettuate modifiche alla gestione dei ritardi nel processo di avvio per evitare conflitti tra il driver i915 e il server X. È stata aggiunta la chiamata DRM_IOCTL_GET_PCIINFO per migliorare il supporto per mesa/libdrm. Sono stati risolti molti errori e problemi;
- è stato riscritto il codice di sincronizzazione nel file system HAMMER2, il che ha permesso di aumentare significativamente le prestazioni di questo FS. È stata inoltre aumentata la velocità delle operazioni di scrittura sequenziale.
Per aumentare la resilienza ai crash, è stata aggiunta il monitoraggio delle dipendenze per escludere la separazione 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 simultanee di scrittura e flush del cache su disco. È stata migliorata l'implementazione dell'operazione umount. È aumentata l'informatività dei messaggi riguardanti violazioni di integrità (errore CRC).HAMMER2 è raccomandato come file system radice predefinito. Il supporto per la clustering non è ancora disponibile. Il file system HAMMER2 è notevole per funzionalità come il montaggio separato degli snapshot, snapshot scrivibili, quote a livello di directory, mirroring incrementale, supporto per vari algoritmi di compressione dei dati e mirroring multi-master con distribuzione dei dati su più host.
- È stata aggiunta il supporto iniziale per il sottosistema FUSE per la creazione di file system nello spazio utente.
- È stata aumentata la performance del filtro a pacchetti PF su sistemi multicore.
- È stato implementato il 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 da codice privilegiato in esecuzione a livello di kernel. SMEP impedisce il passaggio da modalità kernel all'esecuzione di codice a livello utente, bloccando così l'exploitation di molte vulnerabilità nel kernel (il codice shell non verrà eseguito poiché si trova nello spazio utente).
- È stato aggiunto il codice per il blocco di classe MDS (Microarchitectural Data Sampling) nei processori Intel. È necessaria la presenza di microcodice aggiornato. Per impostazione predefinita, la protezione è disattivata e viene attivata tramite 'sysctl machdep.mds_mitigation=MD_CLEAR'. Attivarla comporta un ritardo aggiuntivo di 250 ns 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.
- Sono state aggiornate le versioni dei componenti di terze parti, tra cui xz 5.2.4,
libarchive 3.3.3, libressl 2.9.1, openssh 8.0, ldns 1.7.0,
libedit 2019-03-24. Da FreeBSD sono stati trasferiti evdev, makefs, ministat, libfetch,
dd. Le chiamate reallocarray(), timing_safe*(), freezero(), dup3(), recallocarray(), aligned_alloc(), explicit_bzero() sono state trasferite da OpenBSD a libc. Per impostazione predefinita, durante la compilazione è utilizzato il compilatore gcc-8 anziché gcc-5.
Fonte: opennet.ru
