オペレーティングシステム
個人が使用するコンピュータにはユーザインタフェースが必要とされる。ユーザインタフェースは必ずしもオペレーティングシステムの一部とは限らない。通常はシェルなどのプログラムが実装しているが、人間とのやりとりが必要なプログラムは基本的にユーザインタフェースを備えている。ユーザインタフェースは、キーボードやマウスやクレジットカード読み取り機といった入力デバイスからのデータを取得するのにオペレーティングシステムを介する必要があり、モニターやプリンターといった出力機器にプロンプトやメッセージを出力するのにもオペレーティングシステムを介する必要がある。主なユーザインタフェースは、古くからあるキャラクタユーザインタフェース(コマンドラインインタフェース)と視覚的なグラフィカルユーザインタフェースに大別される。
最近のオペレーティングシステムは一般に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がある。
コンピュータ上の各動作はバックグラウンドであっても一般のアプリケーションであっても、内部的にはプロセスとして動作する。DOSのような機能の限定されたオペレーティングシステムは一度に1つのプロセスしか実行できない。近代的なオペレーティングシステムは一度に複数のプロセスを動作させることができる(マルチタスク)。プロセス管理は複数のプロセスを実行するためにオペレーティングシステムが行う処理である。プロセッサを1つだけ持つ一般的なコンピュータでは、マルチタスクは高速にプロセスからプロセスへ切り替えを行うことで実現される。ユーザーがより多くのプロセスを実行すれば、個々のプロセスに割り当てられる時間は少なくなっていく。多くのシステムでは、これが音声の途切れやマウスカーソルの奇妙な動作などを引き起こす。一般的なプロセス管理は、プロセスごとに優先度を与え、それによって配分される時間を決めている。
オペレーティングシステムのカーネルにはスケジューラと呼ばれるソフトウェアが含まれており、プロセッサが実行すべきプロセスの順序と一度に実行する期間を決定している。スケジューラが選択したプロセスにカーネルが制御を渡し、それによってそのプログラムがCPUとメモリにアクセス可能になる。その後何らかの機構で制御がカーネルに戻され、スケジューラが再び新たなプロセスを選択する。このようなカーネルとアプリケーション間の制御の切り替えをコンテキストスイッチと呼ぶ。
プログラム群へのCPU時間の割当方法の初期のモデルとして協調的マルチタスクがある。
サーバ(サーバ向け)
デスクトップ(パソコン、ワークステーション向け)
モバイル(PDA、スマートフォン向け)
組み込み(組み込みシステム向け)