OS自作入門 その0.5(全体像を眺める)

こんにちは、turtlekazuです。さて、今回からはいよいよ「ゼロからのOS自作入門」を進めていきたいと思います。とはいえ、本の内容をまるパクリで載せては意味がないため、つまづいたところやトリッキーなところ、いい感じの要約、自分が追加で調べてみたことを備忘録がてら書いていきたいと思います。

   

第0章:OSって個人で作れるの?

OSに共通した、3大役割

OS(Operating System)は、WindowsやMacOS、Linuxなどさまざまあります。規模の大小で構成要素も変わってくるので、何をもってOSとするかの明確な線引き自体はないそうです。ですが、必ずもっていると考えられる共通した機能が以下の3つです。

1. ハードウェアに対する細かな制御を、各アプリケーションの代わりに行う -> 抽象化 for アプリケーション
2. 複数アプリやOSのシステムが、並列で動けるように計算資源をうまく分配する -> 最適化 for CPU
3. アプリを横断して、同じやり方(インターフェース)で機能を使えるようにする -> 規格化 for人間

人間が需要者、アプリケーションが供給者、CPUが物流とすると、OSはまさしく総合商社ですね。需要者が百貨店で手軽に入手できるようにし(規格化)、供給者が商社を介して売ることで販売にかかるコストを下げ(抽象化)、需給に合わせて物流を調整する(最適化)。どれに対しても目を光らせて、調整をすることで価値を生むのが仕事なのですね。コンピュータ界の総合商社を作っちゃったんだから、そりゃマイクロソフトが儲かるわけです。

   

全体像

全部で30章と、非常にボリューミーで長期間楽しめる内容になっています。

第1~3章:ブートローダの作成 -> OSをメインメモリに書き込んで起動させる
第4,5章:図形や文字の作成 -> ピクセルの制御
第6,7章:マウスの認識 -> 割り込み処理
第8章:メモリの管理 -> どこが使用中でどこが空いているか
第9,10章: ウィンドウの表示 -> 要素の重ね合わせへの対応
第11章:タイマの対応 -> 一定時間ごとにタスク切り替え、ゲームや動画への対応
第12章:キーボードの認識 -> キーコードの割り込み処理
第13,14章:マルチタスク -> 複数のアプリの平行処理
第15,16章:ターミナルとコマンドの実装 -> 文字による命令の実行
第17章:ファイルシステム -> ファイル名とバイト列を対応づける
第18~20章:アプリケーション -> ユーザーに価値をもたらす、システムコール(アプリとOSの接点を限定する)
第21~23章:システムコールの拡充 -> ウィンドウ開く、時間を計る、キー入力するなど
第24章:ターミナルの複数起動 -> マルチウィンドウの実現
第25,26章:アプリによるファイルの読み書き -> ファイルディスクリプタ番号による区別
第27章:メモリの確保 -> アプリが余裕をもって動くように
第28章:日本語表示 -> フォントの追加
第29章:アプリ間通信 -> 複数のアプリ同士の連携
第30章:おまけ機能 -> テキストビューア、画像ビューア

うーん、なんという密度。でも意外と分解してみれば、
①ハードウェア系(メモリ、マウス、キーボード、タイマ)
②ソフトウェア系(見た目、ファイル、アプリ)
③マルチ化(マルチタスク、マルチウィンドウ、アプリ連携)
という感じで整理できそうです。

   

そもそもOSが起動する仕組み

1. 電源をつける
2. マザーボードに組み込まれているBIOS(Basic Input Output System)が起動する
 昨今のBIOSはUEFI(Unified Extensible Firmware Interface)という規格に対応しているものが多い。
3. BIOSが、実行ファイルを探す
 実行ファイルにOSのプログラムが入っている
4. 一番最初に見つかった実行ファイルを実行
5. OSの起動

   

自作OSの起動手順

1. OSのソースコード(C言語/C++)を書いて、コンパイル(コンピュータが読み込める機械語に翻訳)する
 拡張子の変遷:.h/.c -> .o -> .efi
2. 生成された実行ファイル(.EFIファイル)を、USBメモリなどに書き込む
3. 起動用パソコンに、実行ファイル入りのストレージを接続し電源を入れると、上述の仕組みで自作OSが起動!

上記のプロセスを図にまとめてみたのが以下です。

   

結び

BIOSの存在について、初めてその位置付けを知りました。名前的に、BI”OS”と頭の中で区切って読んでましたが、どちらかというとB”IO”Sと区切るべきなんですね。
次回以降は、ちゃんと実装を開始します。ブートローダなるものを作っていきます。

turtlekazu

モノづくりが大好きです。オーディオや車、ガジェットなども。ミシシッピニオイガメを飼育中。最近、ほうじ茶にハマっています。

おすすめ記事

コメントを残す

メールアドレスが公開されることはありません。