Основная цель Mimiker-предоставить минимальную операционную систему Unix, то есть ядро и набор программ пользователей.
Дизайн ядра сильно вдохновлен систем FreeBSD и NetBSD с некоторыми идеями, взятыми из Linux, Plan9 и других OSES. Мы тратим много времени на чтение исходного кода операционных систем с открытым исходным кодом. Мы тщательно выбираем их лучшие дизайнерские решения, идеи, алгоритмы, API, практики и т. Д., Распределим их в минимум и повторно их или адаптируем к базе кода мимикера. Мы надеемся не повторять их ошибки и отойти от устаревших и непроблемных решений.
Проект Mimiker собирается как единомышленников, которые ценят минимализм, простоту и читаемость кода. Мы стремимся к минимальной возможной сложности решений. Мы любим выбросить код, который не очень полезен или занимается редкими краями. Мы знаем ценность отказа, и мы не стесняемся тратить время на написание инструментов, которые помогают улучшить его.
Хотя программы пользователей пространства являются частью проекта Mimiker, они просто перенесены из NetBSD или Suckless Project. Мы сосредоточены на разработке ядра, так как мы находим это более интересным. Мы не хотим инвестировать слишком много времени в драйверы устройства, поэтому мы храним список целевых платформ.
Если вы хотите принять участие в проекте, прочитайте нашу вики, чтобы узнать больше!
Mimiker-операционная система в реальном времени. Ядро предотвращается, а наши мутекс поддерживают приоритетное наследство. Мы минимизируем работу, выполненную в контексте прерывания, делегируя его для прерывания потоков вместо того, чтобы запускать ее с помощью мягких прерываний.
Mimiker работает на MIPS (32-битный), AARCH64 и RISC-V (как 32-битные, так и 64-битные) архитектуры под контролем QEMU и RESODE.
У Mimiker есть хороший набор инструментов отладки: сценарии gdb , написанные на Python, Dainitizer Adder, Validator, валидатор зависимости блокировки, дезинфицирующее средство для параллелизации ядра. У нас даже есть поддержка профилирования ядра с помощью gprof ! Мы используем Clang для составления нашей базы кода, поэтому мы можем использовать сложные алгоритмы динамического и статического анализа, чтобы помочь надежности кода.
Общий набор примитивов синхронизации предоставляется, т.е. спиновые замки, мутекс и условные переменные - все с простой семантикой. У нас нет нескольких примитивов, которые делают похожие вещи, но немного по -другому, что является общим для ядер FreeBSD или Linux.
Память ядра Mimiker подключена (т. Е. Непереносное), поэтому вам не нужно беспокоиться о выборе правых замков при доступе к памяти ядра, в отличие от FreeBSD. У нас есть распределитель памяти приятелей по физической памяти, распределитель виртуального адреса и распределитель плиты на основе журналов и бумаги VMEM. Наши распределители памяти просты, но эффективны.
Инфраструктура инфраструктуры водителя Mimiker выпускает концепцию регистра аппаратного обеспечения и прерывается аналогично Newbus Freebsd. Специальная помощь приобретается для того, чтобы сделать драйверы портативными. У нас есть подпрограммы перечисления, которые автоматические устройства, прикрепленные к PCI и USB -шинам. Мы используем плоское дерево устройства для привода конфигурации ядра во время фазы запуска.
Виртуальная файловая система и управление виртуальными адресами пользователя свободно основаны на идеях FreeBSD. Они нуждаются в субногтурном количестве работы, чтобы стать такой же зрелой, как и в ядрах FreeBSD или Linux.
У нас более восьмидесяти Syscalls, которые позволяют нам запускать различные инструменты с открытым исходным кодом, в том числе Korn Shell Netbsd, редактор Atto Emacs, интерпретатор Lua и многие другие. У нас даже есть игра:
Mimiker поддерживает:
Мы хотели бы поддержать:
Есть много работы. Пожалуйста, обратитесь к нашей дорожной карте!