詳細はコンピュータネットワークを参照
多くのOSはTCP/IPプロトコルをサポートしている。歴史的に見れば、初期のコンピュータネットワークはモデムを使って電話回線で行われていた(BSC手順など)。その後、パケット通信が使われるようになり、IBMのSNAなどの各社独自のネットワークアーキテクチャが登場した。現在では、TCP/IPを中心とした通信が主流となっている。
通信プロトコルは、トランスポート層まではカーネル内モジュールとして実装し、プレゼンテーション層より上はシステムプロセスとして実装されるのが一般的である。セッション層の実装はシステムによって異なる。
詳細はコンピュータセキュリティを参照
OSが関係するセキュリティ機能は、ユーザーがリソースへの何らかのアクセスを行う際に前もって認証し、そのユーザーのアクセスレベルを決定し、管理者の方針に基づいてアクセスを制限することである。
詳細はグラフィカルユーザインタフェースを参照
最近のOSは一般にGUIを持っている。多くのプロプライエタリなシステム(Windows やMac OS)はカーネルとGUIが密接に関係している。他のOSではユーザーインターフェースはモジュール化されていて、任意のGUIをインストールしたり、新たなGUIを作成したりできる(Linux、FreeBSD、OpenSolaris)。
Windowsでは新たなバージョンが登場する度にGUIを変更してきた。初期のWindowsからWindows Vistaまでを比べてみると、その変化は大きい。
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以降ではメタルアピアランスが導入されている。また、X11も用意されている。
Mac OS Xの前身のNEXTSTEPは様々な独創的なGUI要素で知られ、他のOSに大きな影響を与えた。白黒のシステムであったころよりアルファチャンネルを備えていたのは特筆すべき点である。
LinuxにはいくつかのGUIが存在する。Linuxで使えるGUIとして有名なものは、GNOMEとKDEがある。
詳細はデバイスドライバを参照
デバイスドライバはハードウェアとのやり取りをするためのソフトウェアである。一般にハードウェアとの通信を行うインタフェースを持ち、ハードウェアの接続される何らかの通信サブシステムやバスを経由して通信を行う。コマンドをハードウェアに送り、データの送受信を行う。また、一方でOSやアプリケーションに対するインタフェースも提供する。ハードウェアに強く依存するプログラムであり、OSにも依存している。これによって、OSやアプリケーションがハードウェアを使って動作することが容易になっている。ハードウェアの非同期的な割り込みの処理もデバイスドライバの役割である。
デバイスドライバの主たる設計目標は抽象化である。ハードウェアは用途が同種のものであっても、機種によって動作や性能などがそれぞれ異なる。新たな機能や性能を提供するハードウェアが登場したとき、それらは従来とは異なった制御方式を採用していることが多い。OSを将来にわたってあらゆるハードウェアを制御できるように設計するのは困難である。従って、個別のハードウェアの制御をOSから切り離す必要がある。デバイスドライバはOSとのインタフェース(関数呼び出し)をデバイス固有の処理に変換することが主たる機能となる。理論的には、新たな制御方法の新しいハードウェアが登場しても、そのハードウェア用のドライバが古いOSに対応していれば、古いOSでもドライバだけ置き換えればハードウェアを制御可能となる。
1950年代、OSという概念が登場し始めた。初期のコンピュータはOSを持たなかった。しかし、システム管理用ソフトウェアツールやハードウェアの使用を簡素化するツールはすぐに出現し、徐々にその利用範囲を拡大していった。最初のOSは、IBM 701用にゼネラルモーターズが開発したもの、IBM 704用にゼネラルモーターズとノースアメリカン航空が共同開発したもの等、多くの候補があるが、どういった機能が搭載された時点でOSと呼ぶかによる。この時代のものをOSとは呼ばない場合もある。
当時は、パンチカード等から入力されたプログラムを磁気テープに一旦保存し、その磁気テープを大型コンピュータに接続後、プログラムをロードして実行していた。そのため、入出力装置のドライバに当たるものが作成されていた。また、アセンブラやコンパイラが登場し始めた時代なので、コンパイラをロードしてからプログラムをロードし、コンパイル結果として出力されたアセンブリ言語をアセンブルするために、さらにアセンブラをロードするといった手続きが必要だった。こうした作業を自動化するバッチ処理がOSの機能として実現されていた。また、プロセスの状態を監視するモニタも実装されていた。
1960年代前半、OS機能の増強が進められた。スプール、ジョブ管理、記憶保護、マルチプログラミング、タイムシェアリングシステム、そして、仮想記憶の概念が登場し始めた。これらの概念を複数搭載するOSも登場していた。また、マルチプロセッシングシステムに対応するOSもあった。
1964年に発売されたIBM System/360シリーズに搭載されたOS/360の登場を皮切りとして、1960年代後半、OSは著しい進化を遂げていった。