Files
aios/docs/ARCHITECTURE.md
2025-07-05 13:19:08 +09:00

5.1 KiB

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