オペレーティングシステム
コンピュータごとに、製造元が異なるなどで、実現する機能は同じでも詳細な仕様に差異があるハードウェアが搭載されていることが多い。そのようなハードウェアの統一的で抽象化された利用方法を提供することで、アプリケーションソフトウェアの開発を容易にする。
1970年代 - 1980年代前半は、多種多様な分散システムが普及した。ミニコンピュータ用オペレーティングシステムとしては、VMSが有名である。Multicsは1970年代の様々なオペレーティングシステム、UNIXなどに影響を与えた。UNIXはオープンシステムと呼ばれ、ミニコンピュータからメインフレームまで広く普及した。
また1970年代には低価格なマイクロプロセッサが登場したが、初期のマイクロコンピュータは、メインフレームやミニコンピュータのような大規模なオペレーティングシステムを搭載する容量もなかったため、ディスク管理程度の必要最低限の機能しか持たないオペレーティングシステムが開発された。初期の特筆すべきオペレーティングシステムとしてCP/Mがあり、8ビットのマイクロコンピュータで良く使われた。その大雑把なクローン(複製)として16ビットのIBM PC用にPC DOSが生まれ、そのOEM版であるMS-DOSが普及した。これらはオペレーティングシステムの提供する機能が少なく、画面制御など多くの機能は、アプリケーションが直接ハードウェアを操作する必要があったため、同じCPUを使用していても、ハードウェア(機種)が異なると互換性も失われた。このMS-DOSと後継のMicrosoft Windowsによって、マイクロソフトは世界有数のソフトウェア企業となった。
ページングやセグメントによる仮想記憶を使用することで、カーネルは任意の時点で各プログラムが使用するメモリを選択でき、同じメモリ位置を複数タスクで使用させることも可能となる。
あるプログラムが使用可能な現在のメモリ範囲だが物理メモリが割り当てられていない位置にアクセスしようとしたとき、セグメンテーション違反のように割り込みによってカーネルに遷移する。このような割り込みをUnix系ではページフォールトと呼ぶ。
カーネルがページフォールトを受け付けると、そのプログラムに割り当てられた仮想メモリ空間の調整を行い、要求されたメモリアクセスが可能になるよう物理メモリを割り当てる。これにより、カーネルはそれぞれのアプリケーションへのメモリ割り当てを自由に決定でき、さらには実際には割り当てないでおくことも可能となる。
現代的オペレーティングシステムでは、相対的にアクセス頻度が低いメモリを一時的にディスクなどの二次記憶装置に退避させ、主記憶を他のプログラムのために空けることができる。これをスワッピングと呼び、限られたメモリを複数のプログラムで使用可能にし、メモリの内容を必要に応じて退避させたり復帰させたりできる。
仮想記憶により、実際に搭載しているよりも多くのRAMを使用しているかのような感覚でコンピュータを使用することができる。
従来は機種ごとに専用の制御ソフトが付属し「機種が変わればプログラムは書き直し、周辺機器は買い直し」が常識だったが、オペレーティングシステムがアプリケーションに一貫した上位互換のAPIを提供する事で、OS/360用に書かれたプログラムは、40年以上経過した現在のz/OS上でもバイナリ互換で動作する。このOS/360はNASAが使っていた
この頃のもう1つの重要な進歩としてタイムシェアリングシステムの本格的な実用化がある。コンピュータの資源を複数のユーザーが並行的に使えるようにすることで、システムを有効利用するものである。タイムシェアリングは、各ユーザーに高価なマシンを独占しているかのような幻想を抱かせた。1965年のMulticsのタイムシェアリングシステムは特に有名である。更に1967年にはSystem/360用に、商用初の仮想化オペレーティングシステム(仮想機械)であるCP-40とCP-67が登場し、1台のコンピュータで同時に複数のオペレーティングシステムを稼働できるようになったが、これもタイムシェアリングの応用である。
また仮想記憶は1961年のバロース B5000が商用初とされ、1970年のIBM System/370シリーズ用のOS/VSで広く普及した。コンピュータの利用形態としてオンライントランザクション処理やデータベース処理が普及したのもこの頃である。