Deodeokos
これは、64ビットマルチコアOSおよび救助帳の原則に基づいて書かれたOSプロジェクトです。
記録は簡単なので、頻繁に変更やエラーが発生する可能性があります!
環境と建設
- Apple M1 MacBook Air
- Docker(ubuntu 18.04 / amd64)
- GCC、QEMUはX86_64環境で書かれているOSであるため、M1の場合はDockerプラットフォームオプションを追加する必要があります。
docker build --platform linux/amd64 -t os:1.0 .
docker-compose up -d
docker exec -it os bash
./build.sh && ./qemu.sh
参照
- '64-ビットのマルチコアOS原則と救助の本で導入されたQEMU環境は0.10.4であるため、最新のQEMUを使用すると、OSは適切に表示されません。 QEMU 2バージョンを使用しているので、ブートローダーを変更して解決する必要があります。 80ラインの
cmp al, 19のBootloader.asmをcmp al, 37動作させます。
デバッグ
GDB
GDBを介してデバッグを進めると、2つのシェルが必要になります。
docker exec -it os bash
./build.sh && ./qemu_debug.sh
gdb
target remote:1234
file 02.Kernel64/Temp/Kernel64.elf
ブレークポイントを設定した後の進行のデバッグ
vscode
まず、ネイティブデバッグ拡張機能をインストールします。
VSCODE環境でデバッグを続行する場合は、次のプロセスに従ってください。
-
.vscode/task.json qemuビルド実行 .vscode/task.jsonでqemuデバッグを実行します- ブレークポイント
- F5でデバッグ
.vscode/launch.jsonと.vscode/task.jsonの内容を変更して、コマンドをカスタマイズできます。
変化
- 210125:SpinLock Sync実装
- 211220:対称的なI/Oモードでの中断分散処理
- 211116:マルチコア実装2(コアアクティベーション)
- 211028:マルチコア実装1(MPテーブル実装)
- 211020:シリアルポートデバイスドライバーの実装
- 211017:ファイルシステムのキャッシュとランプディックの実装
- 211002:ファイルI / O実装
- 210927:デバッグ環境構成
- 210902:シンプルなファイルシステムの実装
- 210830:ハードディスクドライバーを追加しました
- 210824:動的メモリ割り当ての実装
- 210813:マルチレディングの実装
- 210809:Mutexを介した人種状態ソリューション
- 210807:マルチレベルキュースケジューラの実装
- 210802:ラウンドロビンスケジューラの実装
- 210725:シンプルなマルチタスク実装
- 210723:タイマーデバイスを追加します
- 210720:シェルの実装コンソール
- 210719:PICコントローラーを使用した割り込みの実装
- 210717:基本的なキーボード割り込みを追加(ポーリング)
- 210716:キーボードドライバーを追加しました
- 210712:保護モードからIA-32Eモードに変換されます
- 210708:最初のカーネルを作成します
- 210706:実際のモードから保護モードへの移行
- 210701:ブートローダーを追加します