2014/12/03

[自作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スペックは以下です。


  • モノリシックカーネル
  • ソースコード長さ 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などかなり助かります。
実機でも動かして見ましたが、やはりエミュレータと違いなかなかうまく行かないし、デバッグもめっちゃつらいです。

開発は動かすことを考えて実装するときもあり、バグがあったり、未実装な部分(FIXMEやTODO)も多いです。
いまはプロセス周りを書いているので、やっとOS開発らしくなってきたなあと感じてます。

現時点の今後の予定としては、プロセス周りの作り込み、OS内部の抽象化(デバイスやファイルシステム)、システムコールの追加を考えています。

今日は以上です。
書く余裕が出来る限りカレンダーを埋めていこうと思っています。
話題は上のリストから拾って詳細を書こうかなと。
また、この程度の記事でも超OKなので自作OS気になるな〜って人は書いていただければ嬉しいです。
「自作OS Advent Calendar 2014」

0 件のコメント:

コメントを投稿