# AIOS アーキテクチャ ## 概要 AIOSは、Rustで実装されたマイクロカーネルアーキテクチャを採用しています。最終的にClaude Codeを実行可能にするため、モジュラー設計を重視しています。 ## システム構成 ``` ┌─────────────────────────────────────────┐ │ ユーザーランド │ │ ┌─────────────┐ ┌─────────────────────┐│ │ │ Claude Code │ │ システムツール ││ │ │ │ │ (ls, cat, etc.) ││ │ └─────────────┘ └─────────────────────┘│ ├─────────────────────────────────────────┤ │ システムコール │ ├─────────────────────────────────────────┤ │ カーネル空間 │ │ ┌─────────┐ ┌─────────┐ ┌─────────────┐│ │ │ プロセス │ │ メモリ │ │ ファイル ││ │ │ 管理 │ │ 管理 │ │ システム ││ │ └─────────┘ └─────────┘ └─────────────┘│ │ ┌─────────────────────────────────────┐│ │ │ ハードウェア抽象化 ││ │ │ VGA・シリアル・キーボード・etc ││ │ └─────────────────────────────────────┘│ ├─────────────────────────────────────────┤ │ ハードウェア │ │ CPU・メモリ・ストレージ │ └─────────────────────────────────────────┘ ``` ## 主要コンポーネント ### 1. カーネルコア (`src/main.rs`) - システムの起動とメインループ - パニックハンドラー - テストフレームワーク統合 ### 2. VGAドライバー (`src/vga_buffer.rs`) - テキストモード画面制御 - 色指定とフォーマット - スクロール機能 ### 3. シリアル通信 (`src/serial.rs`) - UART 16550制御 - デバッグ出力 - QEMU連携 ### 4. メモリ管理 (予定) - 仮想メモリ管理 - ヒープアロケーター - ページテーブル管理 ### 5. ファイルシステム (予定) - VFS (Virtual File System) - 基本的なファイル操作 - ディレクトリ構造 ### 6. プロセス管理 (予定) - タスクスケジューリング - プロセス作成・終了 - IPC (Inter-Process Communication) ## メモリレイアウト ``` 仮想アドレス空間: 0x0000_0000_0000_0000 - ユーザー空間開始 0x0000_7fff_ffff_ffff - ユーザー空間終了 0x8000_0000_0000_0000 - カーネル空間開始 0xffff_ffff_ffff_ffff - カーネル空間終了 物理メモリ: 0x0000_0000 - 0x0009_ffff : 実モード互換領域 0x0010_0000 - 0x7fff_ffff : 利用可能RAM 0x8000_0000 - 0xffff_ffff : デバイスメモリ ``` ## ブートプロセス 1. **BIOS/UEFI** → ブートローダー読み込み 2. **ブートローダー** → カーネルロード 3. **カーネル初期化** → ハードウェア検出 4. **ドライバー初期化** → VGA・シリアル・etc 5. **メモリ管理開始** → ヒープ・ページング 6. **ファイルシステム** → ルートマウント 7. **プロセス管理** → initプロセス開始 8. **ユーザーランド** → Claude Code実行 ## 設計原則 ### 1. 安全性 - Rustの所有権システム活用 - バッファオーバーフローの防止 - 型安全性の保証 ### 2. パフォーマンス - ゼロコスト抽象化 - コンパイル時最適化 - 最小限のランタイムオーバーヘッド ### 3. 拡張性 - モジュラー設計 - プラグアーキテクチャ - 標準インターフェース ### 4. 移植性 - ハードウェア抽象化レイヤー - 設定可能なターゲット - 条件付きコンパイル ## 今後の拡張計画 ### フェーズ1: 基盤システム - [ ] 動的メモリ管理 - [ ] 基本的なファイルシステム - [ ] シンプルなプロセス管理 ### フェーズ2: 高度な機能 - [ ] ネットワークスタック - [ ] デバイスドライバーフレームワーク - [ ] システムコール拡張 ### フェーズ3: Claude Code統合 - [ ] Node.js/Rustランタイム - [ ] パッケージマネージャー統合 - [ ] 開発ツール群 ## 参考アーキテクチャ - **xv6**: 教育用Unix系OS - **Redox**: Rust製マイクロカーネルOS - **seL4**: 形式検証されたマイクロカーネル - **Plan 9**: 分散システム指向OS