136 lines
5.1 KiB
Markdown
136 lines
5.1 KiB
Markdown
# 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 |