lanzamiento , un sistema operativo con núcleo híbrido, en 2003 con el objetivo de un desarrollo alternativo de la rama FreeBSD 4.x. Entre las características de DragonFly BSD se destaca el sistema de archivos de versión distribuida , soporte para la carga de núcleos "virtuales" del sistema como procesos de usuario, la capacidad de caché de datos y metadatos del sistema de archivos en unidades SSD, enlaces simbólicos variantes que consideran el contexto, la posibilidad de congelar procesos manteniendo su estado en el disco, un núcleo híbrido que utiliza hilos livianos (LWKT).
Principales , añadidos en DragonFlyBSD 5.6:
- Se ha modernizado el sistema de gestión de memoria virtual. Se han reescrito muchas subsistemas relacionados con la memoria virtual y PMAP.
En muchos lugares, el código se ha deshecho de bloqueos, incluyendo en las funciones m_page_wakeup, vm_hold y vm_unhold. Se ha mejorado la eficiencia del uso de la caché de CPU al reducir la migración de objetos de VM entre núcleos de CPU y disminuir los costos operativos al manejar excepciones (page-fault) para áreas de memoria compartida. Se ha mejorado el algoritmo de asignación de páginas de memoria. Se han eliminado los retrasos en la función vm_page_alloc(). Se ha añadido la API vm_page_hash*(), que permite realizar selecciones sin bloqueos.Como resultado, se ha logrado un aumento significativo en . Por ejemplo,
. En la prueba de buildkernel, el tiempo de ejecución de operaciones en el lado del núcleo se ha reducido en un 40%. El rendimiento ha aumentado en un 7% al usar CPUs de la familia Haswell y en un 14% para Xeon. En la prueba SELF-EXEC S/DI, en comparación con la versión anterior, se observa un aumento del 23% para Haswell y del 18% para Xeon. En la prueba
SELF-EXEC S/SH, respectivamente un 28% y un 71%, en SELF-EXEC D/DI — 23% y 242% (debido a mejoras en la multitarea), en SELF-EXEC D/SH un 24% y 234%, en FAULTZF un 17% y un 14%, en DOCOMP un 22% y un 42%,
en NATIVEKERNEL un 5.1% y un 8.1%; - Se ha actualizado significativamente el controlador DRM y el gestor de memoria de video TTM para tarjetas gráficas AMD. Se ha añadido soporte para nuevas APU Ryzen. Se ha mejorado el soporte para el framebuffer UEFI. En radeon/ttm se ha eliminado una interbloqueo que afectaba negativamente al rendimiento. Se ha realizado una refactorización de la asignación de retrasos durante el proceso de arranque para evitar conflictos entre el controlador i915 y el servidor X. Se ha añadido la llamada DRM_IOCTL_GET_PCIINFO para mejorar el soporte de mesa/libdrm. Se han resuelto muchos errores y problemas pendientes;
- Se ha reescrito el código de sincronización en el sistema de archivos HAMMER2, lo que ha permitido mejorar significativamente el rendimiento de este FS. También se ha incrementado el rendimiento de las operaciones de escritura secuencial.
Para aumentar la resistencia a fallos, se ha añadido el seguimiento de dependencias para evitar la división de directorios/archivos durante la ejecución de operaciones de creación, renombrado o eliminación. Se ha reescrito el código para trabajar con instantáneas con el fin de reducir las latencias y garantizar la coherencia de la instantánea. Se ha mejorado el manejo de operaciones simultáneas de escritura y vaciado de caché en disco (flush). Se ha optimizado la implementación de la operación umount. Se ha incrementado la informatividad de los mensajes sobre violaciones de integridad (error CRC).HAMMER2 se recomienda como el sistema de archivos raíz por defecto. El soporte para la agrupación todavía no está disponible. El FS HAMMER2 se distingue por características como el montaje separado de instantáneas, instantáneas disponibles para escritura, cuotas a nivel de directorio, espejado incremental, soporte para varios algoritmos de compresión de datos, espejado multi-master con distribución de datos en múltiples hosts.
- Se ha añadido soporte inicial para el subsistema FUSE para crear sistemas de archivos en espacio de usuario.
- Se ha incrementado el rendimiento del filtro de paquetes PF en sistemas multinúcleo.
- Se ha implementado soporte para los mecanismos de protección SMAP (Prevención de Acceso en Modo Supervisor) y SMEP (Prevención de Ejecución en Modo Supervisor) cuando son compatibles en la CPU. SMAP permite bloquear el acceso a datos en el espacio de usuario desde código privilegiado que se ejecuta a nivel de núcleo. SMEP impide la transición del modo núcleo a la ejecución de código que se encuentre en el nivel del usuario, lo que permite bloquear la explotación de muchas vulnerabilidades en el núcleo (el shellcode no se ejecutará, ya que se encuentra en el espacio de usuario).
- Se ha añadido código para el bloqueo de la clase MDS (Microarchitectural Data Sampling) en los procesadores Intel. Para que funcione se necesita un microcódigo actualizado. Por defecto, la protección está desactivada y se activa mediante 'sysctl machdep.mds_mitigation=MD_CLEAR'. Activar esta opción provoca una latencia adicional de aproximadamente 250ns al cambiar de contexto entre el espacio de usuario y el núcleo.
- El núcleo se compila por defecto con la protección retpoline contra ataques Spectre.
- Muchas utilidades del sistema base se han traducido para usar LibreSSL;
- Se han actualizado las versiones de componentes de terceros, incluyendo xz 5.2.4,
libarchive 3.3.3, libressl 2.9.1, openssh 8.0, ldns 1.7.0,
libedit 2019-03-24. Se han trasladado evdev, makefs, ministat, libfetch desde FreeBSD,
dd. Se han incorporado en libc las llamadas reallocarray(), timing_safe*(), freezero(), dup3(), recallocarray(), aligned_alloc(), explicit_bzero() desde OpenBSD. Por defecto, el compilador gcc-8 está habilitado en lugar de gcc-5 para la compilación.
Fuente: opennet.ru
