オペレーティングシステム
ハードウェアから割り込みが発生した場合、オペレーティングシステムのカーネルがそのイベントにどう対応するかを一般に何らかの処理コードを実行して決定する。割り込みには優先順位があり、それに従って実行するコードが決定される。再び人間にたとえれば、電話が鳴ると同時に火災を知らせる火災報知器の非常ベルも鳴ったら、電話には出ずに避難するだろう。ハードウェア割り込みの処理は通常、デバイスドライバと呼ばれるソフトウェアに委任される。デバイスドライバはオペレーティングシステムのカーネルの一部という場合もあるし、別のプログラムという場合もあるし、混在する場合もある。デバイスドライバは割り込みによって得た情報を各種手段を通じて動作中のプログラムに中継する。
実行中のプログラムがオペレーティングシステムに対して割り込みを発生させる場合もある。例えば、あるプログラムがハードウェアにアクセスしたい場合、オペレーティングシステムのカーネルに対して割り込みを発生させ、結果として制御をカーネルに移す。するとカーネルは必要な処理を行う。また、プログラムがメモリなどの資源を追加で要求する場合、割り込みを発生させてカーネルに知らせる。ただし、それらは一般にシステムコールと呼ばれ、ハードウェア割り込みとは実装が異なることもある。
多くのオペレーティングシステムはTCP/IPプロトコルをサポートしている。歴史的に見れば、初期のコンピュータネットワークはモデムを使って電話回線で行われていた(BSC手順など)。その後、パケット通信が使われるようになり、IBMのSNAなどの各社独自のネットワークアーキテクチャが登場した。現在では、TCP/IPを中心とした通信が主流となっている。
通信プロトコルは、トランスポート層まではカーネル内モジュールとして実装し、プレゼンテーション層より上はシステムプロセスとして実装されるのが一般的である。セッション層の実装はシステムによって異なる。
このようなネットワーク機能により、異なるオペレーティングシステム間でネットワークを形成し、計算能力 (RPC)、ファイル、プリンター、スキャナーなどのリソースを共有できる。ネットワークにより、あるコンピュータのオペレーティングシステムが遠隔のコンピュータにあるリソースをあたかも自身に直接接続されているかのように透過的に利用できる。単純な通信に始まり、分散ファイルシステム、グラフィックスやサウンドといった機能の共有まで様々な応用がある。透過的アクセスの例としては、SSHによるコマンドラインの直接使用などもある。
オープンソースの流れでは、従来より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など)を搭載したメインフレームが採用され、使い分けられている。
割り込みはオペレーティングシステムの要であり、オペレーティングシステムが周囲の環境と相互作用し反応するための効率的手段となっている。非常に小さなスタック(50バイトや60バイト)しか持たない古いシステムでは、オペレーティングシステムが対応しなければならないイベントの発生源を「監視」するポーリング方式を採用していたが、現代の大きなスタックを持つシステムでは一般的ではない。現代の多くのCPUは、割り込みをベースとしたプログラミングを直接サポートしている。割り込みが発生すると、その時点のレジスタコンテキストを退避し、そのイベントに対応した特定のコードを実行する。非常に基本的なコンピュータにもハードウェア割り込み機能があり、プログラマは特定の割り込みが発生したときに実行すべきコードを設定することができる。
割り込みを受信すると、コンピュータのハードウェアは実行中のプログラムを自動的に一時停止させ、状態を退避させ、その割り込みに事前に割り当てられているコードを実行する。これは例えば読書中に電話が鳴ったとき、本にしおりを挟み、電話に出るのに似ている。現代的なオペレーティングシステムでは、割り込みはオペレーティングシステムのカーネルが扱う。割り込みはコンピュータのハードウェアが発生させる場合もあるし、実行中のプログラムが発生させる場合もある。