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 , aggiunte in DragonFlyBSD 5.8:
- È stata inclusa l'utilità , progettata per la compilazione locale e la gestione dei propri repository binari DPort. È supportata la parallelizzazione della compilazione di un numero arbitrario di porte, tenendo conto dell'albero delle dipendenze. Nella preparazione di una nuova versione in DPort sono state apportate anche numerose modifiche finalizzate a velocizzare la compilazione di vari pacchetti dipendenti.
- In libc è stato implementato un meccanismo efficace per il mascheramento dei segnali, proteggendo le funzioni malloc*() e simili dai problemi causati dall'interruzione da parte dei segnali. Sono state proposte funzioni sigblockall() e sigunblockall() per un blocco e uno sblocco a breve termine dei segnali, funzionanti senza effettuare chiamate di sistema. Inoltre, nella libc la funzione strtok() è stata adattata per l'uso in applicazioni multithreaded, con l'aggiunta delle costanti TABDLY, TAB0, TAB3 e della funzione __errno_location per migliorare il supporto per dports.
- I componenti dell'interfaccia DRM (Direct Rendering Manager) sono sincronizzati con il kernel Linux 4.9, con il porting da kernel 4.12 di alcune funzionalità mirate a migliorare il supporto per Wayland.
Il driver drm/i915 per GPU Intel è sincronizzato con il kernel Linux 4.8.17, con il trasferimento di codice dal kernel 5.4 per il supporto di nuovi chip (Skylake, Coffeelake, Amber Lake, Whiskey Lake e Comet Lake). Il driver drm/radeon per schede grafiche AMD è sincronizzato con il kernel Linux 4.9. - Gli algoritmi per la paginazione della memoria virtuale sono stati notevolmente migliorati, eliminando o minimizzando i problemi di reattività nell'interfaccia utente in caso di carenza di memoria. Risolti i problemi di blocchi in Chrome/Chromium quando la memoria di sistema è insufficiente.
- Ottimizzato il scaling del kernel su sistemi con un numero elevato di core. Ridotto il tempo di richiesta delle pagine della memoria virtuale. Ridotta la competizione SMP in condizioni di insufficienza di memoria. Aumentata l'efficienza della chiamata «open(… O_RDWR)».
- Ristrutturato il generatore di numeri pseudocasuali nel kernel. Il driver RDRAND è stato adattato per accumulare entropia da tutte le CPU. Ridotto l'intensità
e la dimensione del feed di RDRAND, prima occorrevano il 2-3% del tempo della CPU durante l'inattività. - Aggiunti nuovi syscalls realpath, getrandom e lwp_getname (consentendo di implementare pthread_get_name_np).
- Aggiunto supporto per i meccanismi di protezione SMAP (Supervisor Mode Access Prevention) e SMEP (Supervisor Mode Execution Prevention). SMAP impedisce l'accesso ai dati nello spazio utente da codice privilegiato eseguito in modalità kernel. SMEP impedisce il passaggio dalla 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);
- Ristrutturate le variabili sysctl per la configurazione di Jail. Aggiunta la possibilità di montare nullfs e tmpfs da Jail.
- È stata aggiunta una modalità di emergenza per il filesystem HAMMER2, utilizzabile durante il processo di recupero dopo un guasto. In questa modalità, è consentita la distruzione degli snapshot durante l'aggiornamento in-place degli inode (consente di eliminare file e directory in assenza di spazio libero su disco, quando non è possibile utilizzare il meccanismo copy-on-write). Le prestazioni sono significativamente aumentate grazie alla revisione del supporto per la gestione dei thread in HAMMER2. Notevolmente migliorato il processo di svuotamento dei buffer.
- Migliorata l'affidabilità e le prestazioni di TMPFS. Aumentata l'efficienza operativa in condizioni di scarsità di memoria disponibile nel sistema.
- Nel network stack per IPv4 è stato implementato il supporto per i prefissi /31 ().
In tap è migliorata la gestione di ioctl SIOCSIFMTU per supportare MTU > 1500. Aggiunto supporto per SIOCSIFINFO_IN6 e SO_RERROR. - Il driver iwm è stato sincronizzato con FreeBSD, con supporto per i chip wireless Intel (aggiunto supporto per iwm-9000 e iwm-9260).
- Aggiunte funzioni compatibili con Linux basename() e dirname() per migliorare la compatibilità nei port.
- Sono stati trasferiti da FreeBSD fsck_msdosfs, sys/ttydefaults.h, AF_INET / AF_INET6 in libc/getaddrinfo(), calendar(1), rcorder-visualize.sh. Funzioni da math.h sono state trasferite da OpenBSD.
- Sono state aggiornate le versioni dei componenti di terze parti, tra cui Binutils 2.34, Openresolv 3.9.2, DHCPCD 8.1.3. Il compilatore gcc-8 è utilizzato di default.
Fonte: opennet.ru
