OSの歴史(偏見の塊編)
概要
調査したOSの歴史についてまとめてみます。 OSの歴史には諸説あるため、ここに記載されていることは私が歪曲して解釈している可能性がとてもあるので鵜呑みにしないようお願いします。
ざっくり図
登場するOS
- MULTICS
- UNIX
- BSD系
- minix
- linux
MULTICSという革命
multicsは1960年代に開発されたOSのようです。 これ以前にもOSのようなものは存在していたようですが、現在と比べると全然ハードウェアのマネージメントはしておらず、アプリケーションコード側でハードウェアリソースのコントロールをする必要がありました。 そのため、アプリケーションコードは特定ハードウェアに依存しており、メモリの容量やIOデバイスの数などデバイスの環境が変わるたびにコードを変更する必要がありました。 まぁmulticsでもハードウェア依存なコードは書く必要はあったのだと思いますが、旧OSとの極めて特異だった機能は「タイムシェアリングシステム」の導入です。 タイムシェアリングシステムはざっくりいうとタスクをマイクロ秒とかの単位でCPUを実行するアプリケーションプログラムをスイッチングすることです。 これによりコンピュータの利用者はいかなる時もコンピュータリソースを専有しているかのような状態を作り出しています。 あなたのOSもこの記事を読んでいる間にブラウザ以外のタスクにスイッチングしているはずです。
このタイムシェアリングシステムが導入されたのがmulticsでこれ以外の機能も現OSに受け継がれているくらいです。 なので私はmulticsがOSを枝の一番最初に記載しました。(異論は認める)
UNIX
multicsは大きなスペックを持つOS向けのもので、もっと小型なコンピュータでも動作するOSを作ろうという動きがありました。1968年くらいのことです。 動かすハードウェア環境が違うのでもっと小さなOSになったわけですが、機能のアイデアの多くはmulticsから継承しているといっても良いでしょう。
BSD, FreeBSD
どういう経緯で分岐したのかはわかりませんが、UNIXからBSDに分岐されました。(Berkeley Software Distribution) BSDは主にCSRGと呼ばれる研究グループが主に開発していたため、最新技術が導入され急速に広がったようです。 TCP/IPの実装、高速なファイルシステム、仮想記憶など。 また、無限のUNIX系たちがこのころ誕生したようです。 自分が無知だけかもしれませんが、今でもたまに聞くのはfreeBSDくらいでしょうか。
めちゃくちゃ余談ですが、現在私が働いている会社では以前freeBSDを用いていた時代があったようです。 2010年代前半までfreeBSDで動いていたのは驚きですが、触りたかったという気持ちしかないですね。
minixとかいう幻
UNIX likeでかつUNIX互換のため継承関係があると判断しました。 UNIXはいわゆるモノリシックOSと呼ばれ、kernel modeで多くのことを管理するという設計思想になっています。 一方でminixはファイルシステムやメモリー管理とかもkernel外のuser modeで実行するという設計思想です。 kernelが知っていることは最小限にするという感じですかね。 現代のOSに忠実なminix的思想を持ったOSは知らないです。 しかし、当時このようなマイクロカーネルの思想は流行っていたようです。なぜ主流なOSになれなかったのかというとLinuxというOSが同じ頃に誕生したためです。
linuxという陳腐なkernel
↑でも記載しましたが、minixと同じくらいにlinuxが誕生しました。 linuxはモノリシックなカーネルで当時としては古めかしいOSだったみたいです。 認知された理由は作者であるリーナスの人柄とかもありそうですが、、POSIXに準拠した自由なOSでかつ、枯れた技術を採用していたため安定的に稼働してくれたためです。 今でも大量のディストリビューションが頒布され使われています。 おそらく世界の過半数のサーバーはlinux系OSで動いていると思います。
まとめ
この記事は誰に読まれるとかを意識していないので構成や校正とかしないのでたいへん読みにくかったと思います。 OSはもはや当たり前の抽象レイヤーとして存在していますが、その歴史についてはあまり知られていないと思います。 このあたり整理できたのであれば幸いです。 OSの淘汰には技術的な観点ではなく、ライセンスでの訴訟やその他足の引っ張り合いみたいな構図もどこかであったみたいで、 そのあたりの背景まで追えると非常に面白いと思います。この記事では省きましたが、もし気になる方がいれば調べてみると良いかもしれません。
フィードバックは katamotokosuke0605@gmail.comまで。
kosuke