Definition:
OSには、CPU・メモリ・ディスク・周辺機器などの管理とリソースの効率的な割り当てと制御を担うハードウェア管理、アプリケーションの実行管理・プロセス管理・ファイルシステムの提供を担う実行環境の提供、システムの操作手段の提供やGUIやCLIなどのインターフェースを担うユーザーインターフェースの提供という主要な3つの役割がある。
1956年、IBM 704向けに,ゼネラル・モーターズ(GM,General Motors)の研究所とNAA(North American Aviation)が共同開発したGM-NAA I/Oが世界最初のOSと言われている。
オペレーティングシステム(OS)の中核部分はカーネル(kernel)と呼ばれ、以下の管理機能を担う。
この非効率を解消するため、1950年代半ばにゼネラルモーターズ社とノースアメリカン・アビエーション社がIBM 704向けに開発した GM-NAA I/O が、最初期のバッチ処理システムの一つとされる。複数のジョブをまとめて投入し、前のジョブの終了後に自動的に次のジョブを起動する仕組みにより、オペレータの介入を最小化した。この時期の中心的な課題は、いかにCPUの遊休時間を減らし、ジョブ間の切り替えコストを下げるかであった。
1960年代に入ると、MIT のフェルナンド・コルバトらが中心となって開発した CTSS(Compatible Time-Sharing System)により、複数のユーザーが端末を通じて一台の計算機を対話的に共有するタイムシェアリング方式が実証された。これはバッチ処理と対照的に、ユーザーが計算機の応答をリアルタイムで受け取れる点で画期的であった。
この流れを受け、MIT・ベル研究所・ゼネラル・エレクトリックの共同プロジェクトとして Multics(Multiplexed Information and Computing Service)が構想された。Multics は野心的すぎる設計ゆえに商業的には限定的な成功にとどまったが、ここで培われた概念——階層型ファイルシステム、動的リンク、アクセス制御リストによるセキュリティモデルなど——はその後のOS設計に深い影響を与えた。
Multics プロジェクトから離脱したベル研究所のケン・トンプソンとデニス・リッチーは、1969年、より小規模で単純なシステムとして UNIX を開発した。当初はPDP-7上でアセンブリ言語により実装されたが、1973年にC言語で書き直されたことが後のOS開発に決定的な影響を及ぼした。C言語による実装は、ハードウェアアーキテクチャに依存しない移植性の高いOSという概念を初めて実用レベルで示した。
UNIXの設計思想は以下の点に集約される。
1970年代後半以降、UNIXはAT&Tによる商用ライセンスと、カリフォルニア大学バークレー校によるBSD(Berkeley Software Distribution)という二つの系統に分岐し、ワークステーションやミニコンピュータ市場で広く採用された。
1970年代末から1980年代にかけて、マイクロプロセッサの普及によりパーソナルコンピュータ(PC)が個人・小規模事業者の手に届く価格帯に達すると、OSに対する要求は大きく変化した。マルチユーザーを前提としたUNIX系とは異なり、単一ユーザーが単一のタスクを扱うシンプルなOSが求められた。
1980年代後半から1990年代にかけて、OSの内部構造を巡る設計論争が生じた。
この論争は1992年、当時ヘルシンキ大学の学生であったリーナス・トーバルズが開発した Linux カーネル(モノリシック方式を採用)と、タネンバウムらが教育目的で開発した MINIX(マイクロカーネル方式)との間で、ネットニュース上の公開議論として広く知られることとなった。Linux はGNUプロジェクトが開発してきたユーザー空間ツール群(GNU/Linux)と組み合わさり、オープンソースソフトウェアとして急速に発展し、現在ではサーバー・組み込み機器・スーパーコンピュータ・Android端末など極めて広範な領域で採用されている。
なお、マイクロカーネルの思想は完全に廃れたわけではなく、QNXやmacOSの基盤であるXNU(ハイブリッドカーネル、BSDとMachの要素を統合)などにその系譜が受け継がれている。
現代のOSは、従来の資源管理・実行環境提供の枠を超え、以下のような機能を統合的に担うようになっている。
Mathematics is the language with which God has written the universe.