このWikiHowでは、C言語やC++でのコーディング方法を知らない人が、オペレーティングシステムを計画・開発する方法を説明します。オペレーティングシステムは、コンピュータのハードウェアを管理し、アプリケーションの実行に必要なリソースを提供します。オペレーティング・システムをゼロから書くには、コンピュータ・サイエンス、CやC++のようなプログラミング言語、アセンブリ、コード管理プラクティスの強力なコマンドが必要です。
基礎を学ぶ
-
基礎的なコンピューターサイエンスのコースを受講しましょう。ウェブ用の開発とは異なり、オペレーティング・システムを作るには、アルゴリズム、データ構造、コンピュータ・ハードウェア、リソース管理についての強い理解が必要です。オンラインチュートリアルを読んだだけで、オペレーティングシステム全体を書けるようになるとは思わないでください!ハーバード大学のコースは、EDXを通じてオンラインで無料で受講できる。
-
Pythonのような高級プログラミング言語を学ぶ。コンピューター・サイエンスの基礎をしっかり理解したら、次のステップはCやC++をマスターすることだ。コンピュータ・サイエンスについて学ぶのと同様、言語の習得はオプションではない。
- C言語の初心者なら、EDXを通じて無料で受講できるダートマスのコースをチェックしよう。このコースを修了したら、次のコースを受講することができる。その後、次のようなコースに進みましょう。
- のようなウェブサイトも大きな意味を持ちます。一定期間ブートキャンプに参加し、そこでコードについてさらに学ぶこともできる。
-
アセンブリ言語を学ぶ。アセンブリ言語は、さまざまなプロセッサと通信するために設計された低レベル言語です。アセンブリはプロセッサの種類によって異なるので(例えば、Intel、AMD、VIA、その他のプロセッサ用のx86アセンブリ言語)、コーディングするプロセッサの種類に応じたバージョンを学ぶ必要がある。
- このオープンソースの本全体を読めば、オペレーティング・システムを構築するのに十分な理解を得ることができる。
- は、オンラインでもオフラインでも入手可能な、アセンブリに関する非常にお勧めの本です。
- また、オペレーティング・システムが動作するプロセッサの種類についても、よく調べておく必要があります。プロセッサーアーキテクチャーのマニュアルは、Google検索で簡単に見つけることができます("Intel Manuals"、"ARM manuals "など)。
-
OSのチュートリアルを完了する。OSのチュートリアルは、基本的なオペレーティングシステムを作成するプロセスを順を追って説明してくれます。これにより、プロセスに慣れ、不足している部分がないかどうかを把握することができます。チュートリアルを1つか2つこなせば、あなただけのオペレーティングシステムを作る道が開けます。
- は、最初のシンプルな32ビットカーネルを書くのに役立つチュートリアルです。チュートリアルを終えたら、次はあなた自身のオペレーティング・システムを構成するために使います。
- は、あなた自身のLinuxオペレーティング・システムを作成する手順を説明するオンライン書籍です。
- は、様々なオペレーティング・システムの作成について、最初から最後まで解説した無料の本です。
-
あなたのオペレーティング・システムの目標を考えましょう。オペレーティングシステムに何をさせたいのか?どのように見せるべきか?本当にオペレーティング・システム全体を書く必要があるのか、それともデスクトップ用に特定の外観を作りたいだけなのか?これらはすべて、コードを書き始める前に検討すべきことです。
- 他のプログラマーのチームと一緒に開発することを検討しましょう。開発者チームがプロジェクトに取り組むことで、開発時間を大幅に短縮することができます。
- プロジェクトの目標、計画、質問を公開リポジトリに追加して、他の人が簡単にあなたを助けられるようにしましょう。
オペレーティング・システムを構築する
-
開発環境を選びましょう。これは、新しいオペレーティング・システムをコーディングするために使うプラットフォームです。個人の好みの問題ですが、ほとんどの人はWindowsかUNIXのどちらかを使います。Windowsを使う場合は、CygwinやMinGWのようなUNIX環境をインストールするのがよいでしょう。一般的に、どのような環境であれ、以下のものが含まれていることを確認したい:
- GCC(Gnuコンパイラ)。Windowsを使っているならば、CygwinかMinGWにインストールできます。
- Binutilsはオブジェクト・ファイルの操作に使われるツールのコレクションです。これもWindowsを使っているなら、Cygwinにインストールできる。
- 優れたテキストエディタ。UNIX環境ではVimやemacsがよく使われる。WindowsユーザーならNotepadが使えるし、マルチタブアップグレードのNotepad++もチェックアウトできる。
- PerlやPython。文字列操作には、どちらか一方、あるいは両方が推奨される。
-
バージョン管理システムのセットアップ。オペレーティング・システムを書くということは、おそらく数百行(あるいは数千行!)のコードを作成することになるでしょう。リビジョンで作業する場合、これは混乱する可能性があります。チェックアウトするオプションとしては、 , , などがあります。
-
ブートローダを決める。ブートローダを自分で作りたくなければ、.NET Framework のような既存のものを使うことができます。ブートローダをコーディングする勇気があるなら、OSDev.orgをチェックしてください。
-
カーネルの設計を選びましょう。カーネルはオペレーティング・システムの中核であり、ユーザとコンピュータ・ハードウェアの間のインタフェースを提供します。モノリシック・カーネルとマイクロ・カーネルがあります。モノリシック・カーネルはすべてのサービスをカーネルに実装し、マイクロカーネルは小さなカーネルとサービスを実装するユーザー・デーモンを組み合わせています。一般に、モノリシック・カーネルの方が高速だが、マイクロカーネルの方がフォールト・アイソレーションと信頼性に優れている。
-
小さく始める。メモリ管理やマルチタスクといったことに進む前に、テキスト表示や割り込みといった小さなことから始めよう。大きく飛躍する代わりに、シンプルな16ビットOSを作ってみるのもいいでしょう。
- 2週間で完全なシステムができるわけではない。まずは起動するOSから始めて、それからクールなものへと進んでいこう。
-
仮想マシンを使って新しいOSをテストしましょう。変更を加えるたびにコンピュータを再起動したり、開発用コンピュータからテスト用マシンにファイルを転送したりする代わりに、仮想マシン・アプリケーションを使おう。潜在的なデッドロックやその他のバグをチェックし、必要に応じて修復する。
-
"リリース候補 "をリリースする。テスト済みのコードを公開リポジトリにアップロードすることで、これを行うことができます。これにより、人々があなたのオペレーティング・システムをテストし、遭遇した問題を報告できるようになります。
-
他のOS開発者とネットワークを作る。Redditや.NETなど、さまざまなフォーラムにはOS開発者のコミュニティが集まっています。基本的なオペレーティング・システムの開発について把握したら、既存の投稿を読んで、開発プロセスでどんなことが出てくるか見てみよう。
コメント
最新を表示する
NG表示方式
NGID一覧