lançamento , um sistema operacional com um núcleo híbrido, em 2003 com o objetivo de um desenvolvimento alternativo da linha FreeBSD 4.x. Entre as características do DragonFly BSD, destaca-se o sistema de arquivos de versão distribuída , suporte para a inicialização de núcleos "virtuais" do sistema como processos de usuários, capacidade de cache de dados e metadados do sistema de arquivos em SSDs, considerando links simbólicos variantes que levam em conta o contexto, possibilidade de congelar processos mantendo seu estado no disco, e um núcleo híbrido que utiliza threads leves (LWKT).
Principais , adicionadas no DragonFlyBSD 5.6:
- Foi realizada uma modernização no sistema de gerenciamento de memória virtual. Muitas subsistemas relacionados à memória virtual e PMAP foram reescritos.
Em muitos locais, o código foi liberado de bloqueios, incluindo nas funções m_page_wakeup, vm_hold e vm_unhold. A eficiência da utilização do cache do processador foi aumentada pela redução da migração de objetos de VM entre os núcleos de CPU e pela diminuição da sobrecarga ao lidar com exceções (page-fault) para áreas de memória compartilhadas. O algoritmo de alocação de páginas de memória foi melhorado. As latências na execução da função vm_page_alloc() foram eliminadas. Um API vm_page_hash*() foi adicionado, permitindo realizar seleções sem bloqueios.Como resultado, foi possível . Por exemplo,
no teste buildkernel, o tempo de execução das operações do lado do núcleo foi reduzido em 40%. A largura de banda aumentou em 7% ao usar CPUs da família Haswell e em 14% para Xeon. No teste SELF-EXEC S/DI, em comparação com a versão anterior, observou-se um aumento de desempenho de 23% para Haswell e 18% para Xeon. No teste
SELF-EXEC S/SH, respectivamente, 28% e 71%, em SELF-EXEC D/DI — 23% e 242% (devido à melhoria do funcionamento da multithreading), em SELF-EXEC D/SH, 24% e 234%, em FAULTZF, 17% e 14%, em DOCOMP, 22% e 42%,
em NATIVEKERNEL, 5.1% e 8.1%; - O driver DRM e o gerenciador de controle de memória de vídeo TTM para placas gráficas AMD foram significativamente atualizados. Adicionado suporte para novos APU Ryzen. Melhorado o suporte ao framebuffer UEFI. No radeon/ttm, foi eliminada uma interbloqueio que afetava negativamente o desempenho. Refatorado o tempo de atraso no processo de inicialização para evitar conflitos entre o driver i915 e o servidor X. Chamadas DRM_IOCTL_GET_PCIINFO foram adicionadas para melhorar o suporte a mesa/libdrm. Muitos erros e deficiências foram eliminados;
- O código de sincronização no sistema de arquivos HAMMER2 foi reescrito, o que permitiu um aumento significativo na performance deste sistema de arquivos. Também foi melhorada a performance das operações de gravação sequencial.
Para aumentar a resistência a falhas, foi adicionada a rastreabilidade de dependências para evitar a divisão de diretórios/arquivos durante as operações de criação, renomeação ou exclusão. O código de trabalho com snapshots foi reestruturado para reduzir latências e garantir a consistência do snapshot. A manipulação de operações simultâneas de gravação e descarregamento de cache para o disco (flush) foi aprimorada. A implementação da operação umount foi melhorada. Aumentou a informatização das mensagens de violação de integridade (erro de CRC).O HAMMER2 é recomendado como sistema de arquivos root padrão. O suporte à clusterização ainda não está disponível. O sistema de arquivos HAMMER2 se distingue por recursos como montagem separada de snapshots, snapshots disponíveis para gravação, quotas de diretório, espelhamento incremental, suporte a vários algoritmos de compressão, espelhamento multi-master com distribuição de dados em vários hosts;
- Foi adicionada a suporte inicial para o subsistema FUSE, permitindo a criação de sistemas de arquivos no espaço do usuário;
- A performance do filtro de pacotes PF em sistemas multi-core foi aumentada;
- Foi implementado suporte para os mecanismos de proteção SMAP (Supervisor Mode Access Prevention) e SMEP (Supervisor Mode Execution Prevention), caso sejam suportados pela CPU. O SMAP permite bloquear o acesso a dados no espaço do usuário a partir de código privilegiado executado no nível do núcleo. O SMEP impede a transição do modo núcleo para a execução de código que está no nível do usuário, o que ajuda a bloquear a exploração de muitas vulnerabilidades no núcleo (o código shell não será executado, pois está no espaço do usuário);
- Foi adicionado código para bloqueio da classe MDS (Microarchitectural Data Sampling) nos processadores Intel. Para funcionar, é necessário ter um microcódigo atualizado. Por padrão, a proteção está desativada e pode ser ativada através de 'sysctl machdep.mds_mitigation=MD_CLEAR'. A ativação resulta em uma latência adicional de cerca de 250ns ao alternar o contexto entre o espaço do usuário e o núcleo;
- O núcleo é compilado por padrão com proteção retpoline contra ataques Spectre.
- Muitos utilitários do sistema básico foram traduzidos para usar o LibreSSL;
- As versões de componentes de terceiros foram atualizadas, incluindo xz 5.2.4,
libarchive 3.3.3, libressl 2.9.1, openssh 8.0, ldns 1.7.0,
libedit 2019-03-24. Do FreeBSD foram transferidos evdev, makefs, ministat, libfetch,
dd. Do OpenBSD foram transferidas chamadas libc reallocarray(), timing_safe*(), freezero(), dup3(), recallocarray(), aligned_alloc(), explicit_bzero(). O compilador gcc-8 é usado por padrão para a construção em vez do gcc-5.
Fonte: opennet.ru
