0から作るソフトウェア開発

日々勉強中。。。

0から作るOS開発

環境準備

環境設定

ブートローダ

カーネルローダ

GRUB

カーネル

ドライバーその他

0から作るOS開発 そしてカーネルへ

前回までの内容

これまでで、 ということがわかりました。それではカーネルを0から開発していきましょう!

そしてカーネルへ

ついにカーネルまでたどり着くことができました!

ブートローダ、カーネルローダの開発でかなりCPUまわりの知識が身についてきました

だいぶ長い道のりでしたが、カーネルの開発はもっともっと長い道のりになります。。。

その長い道のりのOS開発の歴史を振り返って見ましょう

コンピュータの歴史

古代の計算機

最も古い計算機は紀元前2400年頃バビロンで作られた”そろばん”で、更にそろばんは紀元前2世紀頃から中国で

発達しました。紀元前5世紀頃にインドでサンスクリット言語の約4000の文法が作られています。

これが現在のコンピュータで使われている、メタルール、再帰規則などの源流となっています。

紀元前1800頃の古代バビロニアで使用されていた数学板

最初のアナログコンピュータ

最初のコンピュータと呼べるものとして、紀元前150年頃の古代ギリシャで作られた歯車を持った機械が作られました。

これが、アンティキティラ島の機械で、37個の歯車で天体運行を計算するためのものです。

アンティキティラ島の機械復元図

最初のデジタルコンピュータ

最初のデジタルコンピュータとして考えられるのは、インカのキープと呼ばれる計算機があります。

ロープの結び目を2進数の数字として扱って、税金などの記録に使われました(可能性があります)。。。

インカのキープ

最初の近代的なコンピュータと最初のプログラム

1820年代にコンピュータの父と言われるチャールズ・バベッジをいう人が、階差機関という多項式関数の値を

計算する機械を設計しました。階差機関は既に、現代のコンピュータの元になる、

制御機・計算機・メモリを持っていました。プログラムはジョゼフ・マリー・ジャカールが作った

パンチカードに記録し、この階差機関に興味を持ったエイダ・ラブレスがベルヌーイ数を計算する

最初のプログラムを作り、記録しました。

この方の名前をとって、1983年にプログラミング言語Adaが作られています。

(結局階差機関が実際に作られることはありませんでした)

階差機関

1854年にはジョージ・ブールが現代コンピュータに不可欠なブール代数を提唱しました

最初の現代的なコンピュータ

現代的なコンピュータの1歩前に、1941年ドイツでコンラート・ツーゼが自由にプログラム可能で自動化された

Zuse Z3というコンピュータが作られました。2200個のリレーから構成され、おおよそ現代のコンピュータが

備えている機能を持っています。また、1944年にはハワード・エイケンがアメリカで初の電気機械式コンピュータを

作りました。ハーバードMarkⅠとMarkⅡといいます。(MarkⅣまであります)

ドイツのZuse Z3

そして、1946年に現代のコンピュータが姿を表します。ノイマン型アーキテクチャのENIACです。

(Wikiによれば世界初の電子コンピュータ説は否定的とのことです。。。本当かどうかはわかりません。。。)

ENIAC

OSの歴史

ノイマン型アーキテクチャをもったコンピュータが登場し、メインフレームとよばれる大規模な汎用コンピュータが

企業の基幹業務で使われるようになりました。しかし、依然としてソフトウェアは独立して動き、ハードウェアが

変わる毎に、ソフトウェアが動作しなくなってしまうので、作り直していました。そこで必然的に、ハードウェアと

ソフトウェアのインターフェイスの要求され、次第にオペレーティングシステムなるものが作られてきました

最初のオペレーティングシステム

最初のOS然としたOSは、1956年にGMがIBM704向けに開発したGM-NAA I/Oと呼ばれるOSです

この時代のOSはまだメインフレーム毎に異なるOSが作られていて、コマンドや実行手順、デバッグ方法も

それぞれで違っていました。この時代のOSはメモリ管理とプログラムの実行を担当していました

GMがIBM704向けに開発したGM-NAA I/O

IBMのOS

そのようななかで、1964年頃にコマンドなどを統一した大中規模システム向けのOS/360とDOS/360という

OSをIBMが開発しました。このときのOSになってマルチタスキングが導入されましたが、まだ保護された

仮想記憶は無く固定アドレスでした。

IBM System 360

Unix

1969年になるとC言語で書かれたUnixが作られました。C言語とUnixはAT& Tのベル研究所で開発されています。

この頃のUnixは無料で配布されて、C言語で書かれて移植性が良いため、急速に広まっていきました。

Unixはマルチユーザ、マルチタスキングを実現したOSで、カーネル・ファイルシステム・シェルから構成されます

グラフィカルなインターフェイスでシェルを使ってOSを操作するため、今までのOSよりも使いやすいOSでした

AT&T Unix

ホームコンピュータで動くOS

1980年代になるとマイクロプロセッサが普及しだし、コモドール64、Apple Ⅱ、Atariなどの

8ビットホームコンピュータが作られました。この時代のOSは以前のOSと違い、ディスクからOSを

ロードできるようになりました。

コモドールのDOS

Windowsの登場

マイクロプロセッサが開発された後低価格のコンピュータが普及し、

Windows1.0が1985年に登場します。初期のWindowsはDOS上のアプリケーションで

ウィンドウの重なりもできないOSで、不人気でした。

Windows1.0

Windows2.0の登場

1987年になり、Windows2.0が開発されました。ウィンドウの重なりもサポートされて、色数も増えましたが

あまり人気がありませんでした。この頃のDOSはまだ16ビットのリアルモードでしか動作せず、

1MB以上のメモリにアクセスすることはできませんでした。

Windows2.0

Windows3.0の登場

1990年になると、Windows3.0が登場します。Windows3.0では操作性が改良され、タスク管理、

メモリ管理(16MBまでアクセスできる)をサポートして、ウィンドウを移動させることができるようになりました

ここからWindowsが売れ出します

Windows3.0

その後のWindows

その後Windowsはバージョンアップを続けています。1995年にWindows95、1998年にWindows98、

2000年にWindows2000、2001年にWindows XPと使いやすいWindowsが登場しています

まとめ

これまでブートローダ、カーネルローダを作ってきましたが、このような歴史上に成り立っています

たかがブートローダの512バイトを作るだけでも、人類の叡智が累積されているようで感慨深いですね

このサイトを見ていただいている方が、この先のOSの一旦を担っていただければ幸いです



次回から本格的に(といいましても、趣味の範囲内ですが)OSを作って行きましょう!

inserted by FC2 system