O principal objetivo do Mimiker é fornecer um sistema operacional mínimo do tipo UNIX, ou seja, o kernel e um conjunto de programas de espaço para usuários.
O design do kernel é fortemente inspirado nos sistemas FreeBSD e NetBSD, com algumas idéias tiradas do Linux, Plan9 e outros sistemas operacionais. Passamos muito tempo lendo o código-fonte de sistemas operacionais de código aberto. Escolhemos cuidadosamente suas melhores decisões de design, idéias, algoritmos, APIs, práticas e assim por diante, destilam -as para descobrir o mínimo e reimplementá -las ou nos adaptar à base do código Mimiker. Esperamos não repetir seus erros e nos afastar das soluções legado e não perfeitas.
O Mimiker Project reúne pessoas que pensam em pessoas que valorizam o minimalismo, a simplicidade e a legibilidade do código. Nós nos esforçamos pela menor complexidade possível de soluções. Adoramos jogar um código que não é terrivelmente útil ou lida com casos de bordas raras. Sabemos valor da depuração e não hesitamos em gastar tempo escrevendo ferramentas que ajudam a melhorá -lo.
Embora os programas do Usuários Space façam parte do Mimiker Project, eles foram simplesmente transportados pelo projeto NetBSD ou sem sucção. Nós nos concentramos no desenvolvimento do kernel, pois achamos mais interessante. Não queremos investir muito tempo nos drivers de dispositivo, por isso mantemos uma lista de plataformas de destino pequenas.
Se você quiser se envolver no projeto, leia nosso wiki para saber mais!
Mimiker é um sistema operacional em tempo real. O kernel é preventível e nossos mutexes apóiam a herança da prioridade. Minimizamos o trabalho realizado no contexto de interrupção, delegando -o para interromper os threads em vez de executá -lo usando interrupções suaves.
As arquiteturas MIMIKER RUNS ON MIPS (32 bits), AARCH64 e RISC-V (ambos de 32 e 64 bits) sob controle QEMU e Renode.
O Mimiker possui um bom conjunto de ferramentas de depuração: scripts gdb escritos em Python, Sinitizador de endereço do kernel, validador de dependência de bloqueio, desinfetante de concorrência do kernel. Temos até apoio ao perfil do kernel usando gprof ! Utilizamos o CLANG para compilar nossa base de código, portanto, podemos empregar algoritmos sofisticados de análise dinâmica e estática para ajudar na confiança do código.
É fornecido um conjunto comum de primitivas de sincronização, por exemplo, bloqueios de spin, mutex e variáveis condicionais - todas com semântica simples. Não temos vários primitivos que fazem coisas semelhantes, mas um pouco diferente, o que é comum para gradesd ou linux.
A memória do kernel do Mimiker está conectada (ou seja, não trocável), para que você não precise se preocupar em escolher bloqueios corretos ao acessar a memória do kernel, ao contrário do FreeBSD. Temos alocador de memória de amigos para memória física, alocador de espaço de endereço virtual e alocador de laje com base em revistas e papel VMEM. Nossos alocadores de memória são simples, mas eficientes.
A infraestrutura do motorista do Mimiker abstrai o conceito de registro de hardware e interrompe de maneira semelhante ao Newbus do FreeBSD. Cuidados especiais são tomados para tornar os motoristas portáteis. Temos rotinas de enumerador que os dispositivos automaticamente anexados a barramentos PCI e USB. Usamos a árvore de dispositivos planos para acionar a configuração do kernel durante a fase de inicialização.
O sistema de arquivos virtual e o gerenciamento de espaço de endereço virtual do usuário são vagamente baseados em idéias do FreeBSD. Eles precisam de uma quantidade substancial de trabalho para se tornar tão madura quanto nos kernels FreeBSD ou Linux.
Temos mais de oitenta syscalls que nos permitem executar várias ferramentas de código aberto, incluindo Korn Shell, da Netbsd, o editor de Atto Emacs, o intérprete da Lua e muito mais. Nós até temos um jogo:
Suportes de mimker:
Gostaríamos de apoiar:
Há muito trabalho a ser feito. Por favor, consulte o nosso roteiro!