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支持:
我們想支持:
有很多工作要做。請參考我們的路線圖!