オペレーティングシステム
さらに高度なセキュリティを備えたシステムでは、監査証跡 (auditing) オプションも提供している。これは、リソースへのアクセス要求を監視し記録するものである(「このファイルは誰が読もうとしたか?」など)。プログラムが何らかのリソースを要求すれば割り込みによってカーネルに制御が渡るので、そこでセキュリティの確認が可能である。プログラムがハードウェアやリソースに直接アクセスできる場合、セキュリティは確保されない。
何者かがコンソールやネットワーク接続経由でログインしようとする際にもセキュリティの確保が必要である。このような要求は一般にデバイスドライバ経由でカーネルに渡され、それから必要ならアプリケーションに渡される。ログインにまつわるセキュリティは、企業や軍などで機密情報を保持しているコンピュータでは長年の課題だった。アメリカ国防総省 (DoD) はセキュリティ評価に関する基本要件を定めた標準 Trusted Computer System Evaluation Criteria (TCSEC) を策定した。TCSECはセキュリティを要求されるシステムの調達条件とされるようになったため、オペレーティングシステムのメーカーはこれを重視するようになった。
個人が使用するコンピュータにはユーザインタフェースが必要とされる。ユーザインタフェースは必ずしもオペレーティングシステムの一部とは限らない。通常はシェルなどのプログラムが実装しているが、人間とのやりとりが必要なプログラムは基本的にユーザインタフェースを備えている。ユーザインタフェースは、キーボードやマウスやクレジットカード読み取り機といった入力デバイスからのデータを取得するのにオペレーティングシステムを介する必要があり、モニターやプリンターといった出力機器にプロンプトやメッセージを出力するのにもオペレーティングシステムを介する必要がある。主なユーザインタフェースは、古くからあるキャラクタユーザインタフェース(コマンドラインインタフェース)と視覚的なグラフィカルユーザインタフェースに大別される。
最近のオペレーティングシステムは一般にGUIを持っている。多くのプロプライエタリなシステム(WindowsやMac OS)はカーネルとGUIが密接に関係している。他のオペレーティングシステムではユーザインタフェースはモジュール化されていて、任意のGUIをインストールしたり、新たなGUIを作成したりできる(Linux、FreeBSD、OpenSolaris)。
Windowsでは新たなバージョンが登場するたびにGUIを変更してきた。初期のWindowsからWindows Vistaまでを比べてみると、その変化は大きいし、MacintoshのGUIは1999年のMac OS Xの登場で劇的に変化した。
Macでは初期からSystem 6.0.xまでが白黒のGUIで、System 7以降もカラー化されたのみで、Mac OS 8でプラチナアピアランスが採用されても、Mac OS 9.2.2までは基本要素はほぼ変わらなかった。しかしMac OS Xになって完全に刷新され、AquaベースのGUIになった。Mac OS X v10.3以降ではメタルアピアランスが導入され、その後もバージョンアップのたびに少しずつ手が加えられている。また、Aquaとは別にX11も用意されている。
Mac OS Xの前身のNEXTSTEPは様々な独創的なGUI要素で知られ、他のオペレーティングシステムやデスクトップ環境に大きな影響を与えた。グレースケールのシステムだったころよりアルファチャンネルを備えていたのは特筆すべき点である。
LinuxではGUIを提供するデスクトップ環境がいくつか存在する。Linuxで使えるGUIとして有名なものは、GNOMEとKDEがある。
1950年代、オペレーティングシステムという概念が登場し始めた。初期のコンピュータはオペレーティングシステムを持たなかった。しかし、システム管理用ソフトウェアツールやハードウェアの使用を簡素化するツールはすぐに出現し、徐々にその利用範囲を拡大していった。最初のオペレーティングシステムは、IBM 701用にゼネラルモーターズが開発したもの、IBM 704用にゼネラルモーターズとノースアメリカン航空が共同開発したもの等、多くの候補があるが、どういった機能が搭載された時点でオペレーティングシステムと呼ぶかによる。この時代のものをオペレーティングシステムとは呼ばない場合もある。
当時は、パンチカード等から入力されたプログラムを磁気テープに一旦保存し、その磁気テープを大型コンピュータに接続後、プログラムをロードして実行していた。そのため、入出力装置のドライバに当たるものが作成されていた。また、アセンブラやコンパイラが登場し始めた時代なので、まずコンパイラをロードしてからプログラム(ソースコード)をロードし、コンパイル結果として出力されたアセンブリ言語をアセンブルするために、さらにアセンブラをロードするといった手続きが必要だった。こうした作業を自動化するバッチ処理がオペレーティングシステムの機能として実現されていた。また、プロセスの状態を監視するモニタも実装されていた。
1960年代前半には、オペレーティングシステム機能の増強が進められた。スプール、ジョブ管理、記憶保護、マルチプログラミング、タイムシェアリングシステム、そして、仮想記憶の概念が登場し始めた。これらの概念を複数搭載するオペレーティングシステムも登場していた。また、マルチプロセッシングシステムに対応するオペレーティングシステムもあった。
1960年代後半には、オペレーティングシステムは著しい進化を遂げた。現在のオペレーティングシステムの概念や基本部分(カーネル)の技術の大半は、この時期に完成された。
1962年、ゼネラル・エレクトリックがGECOS(後のGCOS)の開発を開始した。
1964年発表のIBM System/360シリーズに搭載されたOS/360およびDOS/360は世界初の商用オペレーティングシステムとされ、単一のOSシリーズで幅広いモデル(性能、容量、価格帯)と周辺機器を稼働させ、更にハードディスクドライブをサポートし、本格的な(プリエンプティブな)マルチタスクを実現した。「オペレーティングシステム」という用語が一般化したのもOS/360からである。従来は機種ごとに専用の制御ソフトが付属し「機種が変わればプログラムは書き直し、周辺機器は買い直し」が常識だったが、オペレーティングシステムがアプリケーションに一貫した上位互換の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で広く普及した。コンピュータの利用形態としてオンライントランザクション処理やデータベース処理が普及したのもこの頃である。
1970年代 - 1980年代前半は、多種多様な分散システムが普及した。ミニコンピュータ用オペレーティングシステムとしては、VMSが有名である。Multicsは1970年代の様々なオペレーティングシステム、UNIXなどに影響を与えた。UNIXはオープンシステムと呼ばれ、ミニコンピュータからメインフレームまで広く普及した。
また1970年代には低価格なマイクロプロセッサが登場したが、初期のマイクロコンピュータは、メインフレームやミニコンピュータのような大規模なオペレーティングシステムを搭載する容量もなかったため、ディスク管理程度の必要最低限の機能しか持たないオペレーティングシステムが開発された。初期の特筆すべきオペレーティングシステムとしてCP/Mがあり、8ビットのマイクロコンピュータで良く使われた。その大雑把なクローン(複製)として16ビットのIBM PC用にPC DOSが生まれ、そのOEM版であるMS-DOSが普及した。これらはオペレーティングシステムの提供する機能が少なく、画面制御など多くの機能は、アプリケーションが直接ハードウェアを操作する必要があったため、同じCPUを使用していても、ハードウェア(機種)が異なると互換性も失われた。このMS-DOSと後継のMicrosoft Windowsによって、マイクロソフトは世界有数のソフトウェア企業となった。
なお、1980年代の別の特筆すべき流れとして、GUIを標準装備したApple Computer(現:Apple)のMacintoshがある。Macintoshのオペレーティングシステム (Mac OS) は、当時の性能的制約から、多くの部分がファームウェアの状態でハードウェアに組み込まれてはいたが、現在でいうウィジェット・ツールキットを含むToolboxと呼ばれるAPI群を持ち、アプリケーションにおけるGUIのデザイン開発をある程度まで標準化した。
マイクロプロセッサの高性能化と低価格化が進むと、業務用途のシステムでは、高機能な端末を大量に用意することが可能になり、UNIXをベースとしたクライアントサーバモデルが普及した。クライアント機であるワークステーションのオペレーティングシステムとしてSunOS、IBM AIX、IRIXなどのUnix系オペレーティングシステムが用いられた。この時期には肥大化したUNIXの再設計の機運が高まり、マイクロカーネルという新しい設計手法が生まれ、成果としてMachなどのカーネルが作られた。しかし、UNIXの権利を持つAT&Tがライセンスに厳しい条件をつけるようになり、UNIXを自由に改変したり、改変した機能を外部に公開することができなくなった。このため、オープンシステムとしてのUNIXのオープンな文化は一時衰退に追い込まれた。さらにUNIXの標準規格を巡ってUNIX戦争が勃発し、UNIX市場は大きなダメージを受けた。
1980年代後半には、パソコンにも32ビット時代が到来し、1990年代に入ると、低価格なAT互換機でもメモリを十分に搭載すればPC-UNIXの利用が可能になりはじめた。当時のパソコンでは、オペレーティングシステムとして最低限の機能しか持たないDOSが依然として使われており、GUIやネットワーク、マルチメディアに対応させるため、ベンダがDOSを様々な形で拡張したシステムソフトウェアや、ウィンドウシステムを搭載するようにもなったが、これは互換性や信頼性など様々な点で問題を発生させていた。こうした問題を解決するため、堅牢な(プリエンプティブな)マルチタスク機能、高度なネットワーク機能など、従来のUNIX(互換)ワークステーション並みの機能がパソコンにも求められるようになってきた。さらに、肥大化したソフトウェア開発の効率を改善するためにオブジェクト指向APIを導入し、Macintoshのように標準化されたGUIを備えることも求められた。これらの機能を備えたオペレーティングシステムは「次世代オペレーティングシステム」、「モダン・オペレーティングシステム」などと呼ばれた。
1987年にはIBMとマイクロソフトが、パーソナルコンピュータ用に堅牢なマルチタスク機能・GUI(同年末の1.1より)・ネットワーク機能(拡張版)を装備したOS/2を発表した。1988年に登場したNEXTSTEPは、業務用途に耐える堅牢性・全面的なオブジェクト指向導入による柔軟性・高度なグラフィック機能・一貫したGUIといった、新世代のデスクトップオペレーティングシステムで求められる機能を全て実現した。しかしこれらは当時のハードウェア性能では負荷が大きかったため広くは普及せず、代わりに、軽量だが堅牢なメモリ管理やマルチタスク機能は持たないMac OSや、Windows 3.x などのGUI環境が徐々に普及していった。これらは当時の限られたハードウェアでも快適に動作したが、安定性や機能では劣っていた。
UNIX(互換)系オペレーティングシステムの流れでは、UNIXの権利を持つAT&T(1992年からはノベル)がソースコードの自由な改変を禁じていたことから、オープンソースのUNIX互換オペレーティングシステムが開発されはじめる。1990年にHurdの開発が開始され、1991年に、Linuxがフリーソフトウェアとして公開された。マイクロカーネルなどの新しい設計手法を採用し、トレンドに合わせたびたび設計が変更されたHurdの開発が停滞する一方、Linuxは保守的な設計とバザール方式という不特定多数の担い手による開発手法を採用し、迅速な開発が進められ、PC-UNIXのデファクトスタンダードとなった。ただしLinuxはオペレーティングシステムの心臓部であるカーネルのみのため、カーネル以外のオペレーティングシステムを構成するソフトウェアを揃えて自ら環境を整える必要があり、初期段階においては技術者などのごく一部の人たちにのみ使われていた。386BSDを皮切りにフリーのBSD系UNIXも登場したが、UNIXの権利者だったノベルとBSDを開発したカリフォルニア大学バークレー校との訴訟に巻き込まれ、開発中止を余儀なくされた(1994年からFreeBSDとNetBSDの開発が再開される)。
1994年には、Windowsとしては初めて、32ビットに本格対応(カーネルの32ビット化)し、堅牢なマルチタスク機能を備えたWindows NTが登場した。ただこれも負荷や互換性の問題などから個人用途にはあまり普及せず、かわって急速に普及したのはWindows 3.xを拡張しつつ、Windows NTの機能を限定的に取り入れたWindows 95であった。以降、Windows NT系とWindows 9x系との並存が続き、WindowsがWindows NTベースに一本化されたのは2001年のWindows XPからである。
また、Appleも同年、NEXTSTEPを発展させたMac OS Xを新たにリリース、従来の Mac OS の後継となった。このころには低価格なパーソナルコンピュータでも、これらのオペレーティングシステムの負荷を問題としないほどに高性能化しており、オープンで低価格な分散コンピューティングを広めた(ダウンサイジング)。
2003年にはパソコンにも64ビット時代が到来し、オペレーティングシステムも64ビット化が進んだが、16ビット化や32ビット化の際と比較するとオペレーティングシステムの機能や役割に大きな変化はなかった。商用のパソコン用オペレーティングシステムのWindowsとMac OS Xのいずれもが64ビットへの移行を徐々に進めていった。Windowsは同一バージョンのオペレーティングシステムで32ビット版と64ビット版の双方を提供して、Mac OS Xは32ビットカーネルを維持したまま、一般プロセスに64ビット機能を持たせる道を選んだ。2000年代中頃まではパソコンの性能向上が著しかったため、デスクトップ用途の新しいオペレーティングシステムは同時代における高性能なパソコンを必要としていたが、2006年を境にしてCPUの性能向上の限界が顕著に現れ始めると、高効率化を目指した開発にシフト。Windows Vista・Windows 7やmacOSなどの新しいオペレーティングシステムにおいて、高機能のマルチコアCPUやプログラマブルシェーダを搭載したビデオチップへの対応が進められた。
オープンソースの流れでは、従来よりGNUがUNIX向けのツール群を開発していたが、これらをLinuxカーネルと組み合わせたGNU/Linuxが、2000年頃よりUnix系オペレーティングシステムの主流となった。またBSD系オペレーティングシステムもUnix系オペレーティングシステムのシェアの大きな部分を占めている。
一方、組み込みシステムにもより複雑な機能が求められるようになり、NetBSD、VxWorks、LynxOS、QNX、Enea OSE、Symbian OSなど汎用オペレーティングシステムをベースとしリアルタイム性能を持たせた組み込みオペレーティングシステムが幅広い用途に使われている、中でもオープンソースのTOPPERSのITRONを含むTRON系オペレーティングシステム・APIが、2020年現在、組み込みオペレーティングシステムの60%のシェアを持っている。
1990年代以降はダウンサイジングの流れにより、業務用途でもオープンシステムやWindowsへと主流が移行している中、信頼性・可用性を重視する用途には、現在でも専用オペレーティングシステム(z/OS、MSP/XSP、VOS3、ACOSなど)を搭載したメインフレームが採用され、使い分けられている。
2000年代末以降、パーソナルコンピュータ市場が成熟化する一方で、スマートフォンやタブレットに代表される、デスクトップ・オペレーティングシステムから派生した組み込みプラットフォームが普及し、モバイルコンピューティングが一般化した。
これらはカメラ、GPS、加速度センサー、ジャイロスコープ、無線LAN、Bluetooth、狭い画面に最適化されたタッチパネルなどのインタフェースを組み込み、携帯機器の低消費電力の要求に応えたiOS、Androidなどのモバイルプラットフォームを採用している。