Mimiker的主要目标是提供最小的Unix式操作系统,即内核和一组用户空间程序。
内核设计受到FreeBSD和NetBSD系统的极大启发,并从Linux,Plan9和其他OSS中提取了一些想法。我们花费大量时间阅读开源操作系统的源代码。我们仔细选择了他们的最佳设计决策,想法,算法,API,实践等,将它们提取到最低限度并重新实现或适应Mimiker代码库。我们希望不要重复他们的错误,而摆脱遗产和不完美的解决方案。
Mimiker Project聚集了喜欢珍视极简主义,简单性和代码的可读性的人。我们为解决方案的最低复杂性而努力。我们喜欢扔掉无用或处理稀有边缘案例的代码。我们知道讨论的价值,我们会毫不犹豫地花时间编写帮助改善它的工具。
尽管用户空间程序是Mimiker项目的一部分,但它们仅从NetBSD或Suckless Project中移植。我们专注于内核开发,因为我们发现它更有趣。我们不想将太多时间投入到设备驱动程序上,因此我们将目标平台的列表保持在较小。
如果您想参与该项目,请阅读我们的Wiki以了解更多信息!
Mimiker是一个实时操作系统。内核是可以预先享有的,我们的互惠符支持优先级继承。我们通过将其委派给中断线程而不是使用软中断来最大程度地减少中断上下文中的工作。
Mimiker在QEMU和RENODE控制下的MIPS(32位),AARCH64和RISC-V(32位和64位)架构上运行。
Mimiker拥有一套不错的调试工具:用Python编写的gdb脚本,内核地址消毒剂,锁定依赖验证器,内核并发消毒剂。我们甚至支持使用gprof分析内核!我们使用clang来编译我们的代码库,因此我们可以使用复杂的动态和静态分析算法来帮助代码可靠性。
提供了一组共同的同步基原始素,即自旋锁,静音和条件变量 - 全部具有简单的语义。我们没有多个执行类似事情的原始词,但是有些不同,这对于FreeBSD或Linux内核很常见。
Mimiker的内核内存是有线的(即不封闭的),因此与FreeBSD不同,您不必担心在访问内核内存时选择正确的锁。我们有基于杂志和VMEM纸的实物内存,虚拟地址空间分配器和平板分配器的好友内存分配器。我们的内存分配器简单而有效。
Mimiker的驱动程序基础架构将硬件寄存器的概念抽象出来,并以与FreeBSD NewBus相似的方式中断。特别注意使驾驶员便携。我们有枚举程序例程,该例程可自动检测到PCI和USB总线上的设备。我们在启动阶段使用平坦的设备树来驱动内核配置。
虚拟文件系统和用户虚拟地址空间管理是基于FreeBSD的想法而宽松的。他们需要大量的工作才能像FreeBSD或Linux内核一样成熟。
我们有超过80个syscalls,使我们能够运行各种开源工具,包括Netbsd的Korn Shell,Atto Emacs Editor,Lua Exprenter等。我们甚至有游戏:
Mimiker支持:
我们想支持:
有很多工作要做。请参考我们的路线图!