[自作OS Advent Calendar 2014] 自作OSの紹介的なの
この記事は「自作OS Advent Calendar 2014」3日目の記事として書かれました。
まずはじめに、上記リンクを見ていただければ直ぐにわかりますが、自分が主催にもかかわらず1,2日が空きで書いてないです。これについて申し訳ありません。(言い訳ですが多忙につき書いていられませんでした)。
さて、とりあえず、何でもいいから書かないと始まらないということで、3日目として、現在開発中の自作OSの紹介的な話をしたいと思います。
開発リポジトリはこれ
https://github.com/mopp/Axel
名前は"Axel"と書いて、"あくせる"と呼んでいます。
通称"もぷりんOS"です。(余談だけど、Mopris(もぷりす)って案もあった)
イメージカラーはメタリックレッドです。この時点で、名前の由来がわかる人にはわかるかもしれませんね。
きっかけとしては、元々Linuxとかの中身が気になっていたということと、自作OS入門を読んで作って見たいなーと思っていたからです。
あと、セキュキャンに応募して2回落とされているので、それも開発モチベーションとして一つあります。来年も応募します(来年で最後なので行きたいんですよかなり)
具体的な話に移ります。
この記事を書いている時点のOSスペックは以下です。
実装されている機能は以下です。
環境にはQEMUとBochsを使ってます。
Bochsはデバッガが良い感じなのでおすすめです。
スタック、レジスタ、ページテーブル、実行コードの逆アセンブル表示、MagicBreakなどかなり助かります。
実機でも動かして見ましたが、やはりエミュレータと違いなかなかうまく行かないし、デバッグもめっちゃつらいです。
開発は動かすことを考えて実装するときもあり、バグがあったり、未実装な部分(FIXMEやTODO)も多いです。
いまはプロセス周りを書いているので、やっとOS開発らしくなってきたなあと感じてます。
現時点の今後の予定としては、プロセス周りの作り込み、OS内部の抽象化(デバイスやファイルシステム)、システムコールの追加を考えています。
今日は以上です。
書く余裕が出来る限りカレンダーを埋めていこうと思っています。
話題は上のリストから拾って詳細を書こうかなと。
また、この程度の記事でも超OKなので自作OS気になるな〜って人は書いていただければ嬉しいです。
「自作OS Advent Calendar 2014」
まずはじめに、上記リンクを見ていただければ直ぐにわかりますが、自分が主催にもかかわらず1,2日が空きで書いてないです。これについて申し訳ありません。(言い訳ですが多忙につき書いていられませんでした)。
さて、とりあえず、何でもいいから書かないと始まらないということで、3日目として、現在開発中の自作OSの紹介的な話をしたいと思います。
開発リポジトリはこれ
https://github.com/mopp/Axel
名前は"Axel"と書いて、"あくせる"と呼んでいます。
通称"もぷりんOS"です。(余談だけど、Mopris(もぷりす)って案もあった)
イメージカラーはメタリックレッドです。この時点で、名前の由来がわかる人にはわかるかもしれませんね。
きっかけとしては、元々Linuxとかの中身が気になっていたということと、自作OS入門を読んで作って見たいなーと思っていたからです。
あと、セキュキャンに応募して2回落とされているので、それも開発モチベーションとして一つあります。来年も応募します(来年で最後なので行きたいんですよかなり)
具体的な話に移ります。
この記事を書いている時点のOSスペックは以下です。
- モノリシックカーネル
- ソースコード長さ 8000 行
- ソースコード容量 250 KB
- 実行ファイル容量 105 KB
- 対応アーキテクチャ x86_32
- 最低動作メモリ 12MB
- 使用言語 C, nasm
- 参考OS Linux, FreeBSD, Unix v6, xv6, HariboteOS
実装されている機能は以下です。
- 物理メモリ管理 (BuddySystem)
- x86ページング
- 仮想メモリ管理 (Two Level Segregated Fit Allocator)
- 割り込み
- PS/2マウス、キーボード
- VBEグラフィック
- ATAデバイスアクセス
- FAT32/16 ファイルシステム
- ACPI(シャットダウンのみ)
- システムコール
- ELF形式ロード (静的のみ)
- プロセス管理 (fork, execのみ)
- プロセススケジューリング(ラウンドロビン)
環境にはQEMUとBochsを使ってます。
Bochsはデバッガが良い感じなのでおすすめです。
スタック、レジスタ、ページテーブル、実行コードの逆アセンブル表示、MagicBreakなどかなり助かります。
実機でも動かして見ましたが、やはりエミュレータと違いなかなかうまく行かないし、デバッグもめっちゃつらいです。
もぷりんOSだよ pic.twitter.com/KnHfXgjLax
— もぷり (@Mopp_jp) October 13, 2014
開発は動かすことを考えて実装するときもあり、バグがあったり、未実装な部分(FIXMEやTODO)も多いです。
いまはプロセス周りを書いているので、やっとOS開発らしくなってきたなあと感じてます。
現時点の今後の予定としては、プロセス周りの作り込み、OS内部の抽象化(デバイスやファイルシステム)、システムコールの追加を考えています。
今日は以上です。
書く余裕が出来る限りカレンダーを埋めていこうと思っています。
話題は上のリストから拾って詳細を書こうかなと。
また、この程度の記事でも超OKなので自作OS気になるな〜って人は書いていただければ嬉しいです。
「自作OS Advent Calendar 2014」
コメント
コメントを投稿