Mimikerの主な目標は、最小限のUNIXのようなオペレーティングシステム、つまりカーネルとユーザースペースプログラムのセットを提供することです。
Kernel Designは、Linux、Plan9、およびその他のOSから撮影されたいくつかのアイデアを備えたFreeBSDおよびNetBSDシステムに大きく触発されています。オープンソースオペレーティングシステムのソースコードを読むのに多くの時間を費やしています。私たちは、彼らの最良のデザインの決定、アイデア、アルゴリズム、API、プラクティスなどを慎重に選択し、それらを最小限に抑えて蒸留し、それらを再装備するか、Mimikerコードベースに適応します。彼らの間違いを繰り返さず、レガシーや非完璧なソリューションから離れないことを願っています。
Mimiker Projectは、コードのミニマリズム、シンプルさ、読みやすさを大切にする心のある人々のように集まります。私たちは、ソリューションの可能な限り低い複雑さを求めています。私たちは、それほど便利ではないコードを捨てるのが大好きで、まれなエッジケースを処理します。私たちはデバッグ性の価値を知っており、それを改善するのに役立つツールを書くのに時間を費やすことをheしません。
ユーザースペースプログラムはMimiker Projectの一部ですが、NetBSDまたはサックレスプロジェクトから移植されただけです。カーネルの開発に焦点を当てています。これは、より興味深いものだと思うからです。デバイスドライバーにあまりにも多くの時間を投資したくないので、ターゲットプラットフォームのリストを小さく保ちます。
プロジェクトに参加したい場合は、ウィキを読んで詳細を確認してください!
Mimikerはリアルタイムオペレーティングシステムです。カーネルは先制的であり、私たちのミューテックスは優先順位の継承をサポートしています。ソフト割り込みを使用して実行する代わりに、スレッドを中断するように委任することにより、割り込みコンテキストで行われた作業を最小限に抑えます。
Mimikerは、MIPS(32ビット)、AARCH64、RISC-V(32ビットと64ビットの両方)アーキテクチャをQEMUおよびRenode Controlで実行します。
Mimikerには、Pythonで書かれたgdbスクリプト、カーネルアドレス消毒剤、ロック依存性検証装置、カーネルコンクール性消毒剤。 gprofを使用してカーネルのプロファイリングをサポートしています! Clangを使用してコードベースをコンパイルするため、コードの信頼性を支援するために、洗練された動的および静的分析アルゴリズムを使用できます。
同期プリミティブの一般的なセット、つまりスピンロック、ミューテックス、条件付き変数が提供されます。同様のことを行う複数のプリミティブはありませんが、FreeBSDまたはLinuxカーネルで一般的なものが少し異なります。
Mimikerのカーネルメモリは有線であるため(つまり、スワップ不可)、FreeBSDとは異なり、カーネルメモリにアクセスするときに右ロックを選択することを心配する必要はありません。雑誌とVMEMペーパーに基づいた物理メモリ、仮想アドレススペースアロケーター、スラブアロケーター用のバディメモリアロケーターがあります。私たちのメモリアロケーターはシンプルでありながら効率的です。
Mimikerのドライバーインフラストラクチャは、FreeBSDのNewbusと同様の方法でハードウェアレジスタと中断の概念を抽象化します。ドライバーをポータブルにするために特別な注意が払われています。 PCIおよびUSBバスに接続されているデバイスをオートデットする列挙者ルーチンがあります。フラットデバイスツリーを使用して、起動段階でカーネル構成を駆動します。
仮想ファイルシステムとユーザー仮想アドレススペース管理は、FreeBSDのアイデアに大まかに基づいています。彼らは、FreeBSDまたはLinuxカーネルと同じくらい成熟するためには、サブサブ量の作業が必要です。
NetBSDのKorn Shell、Atto Emacs Editor、Lua Interpreterなど、さまざまなオープンソースツールを実行できる80を超えるSyscallsがあります。私たちもゲームを持っています:
Mimikerはサポートしています:
サポートしたい:
やるべきことがたくさんあります。ロードマップを参照してください!