システムソフトウェア

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動先: 案内検索

システムソフトウェア: System Software: Systems Software)またはシステムプログラムは、コンピュータハードウェア管理や制御などを行うソフトウェア全般を指す用語。対比語はアプリケーションソフトウェア(業務プログラム)。類似の用語には基本ソフトウェア、システム制御ソフトウェア、などがある。

一般的な例には、オペレーティングシステムデバイスドライバプログラミング言語処理系などがあるが、システムや観点にもより、その境界は明確ではない。

概要[編集]

通常、各アプリケーションプログラムを稼働させるための、よりシステム(ハードウェアなど)に近い、共通的なソフトウェア・プログラムが、システムソフトウェアと呼ばれている。しかしその範囲は、時代やシステムによっても異なる。

初期のコンピューターや、一部の組み込み機器、専用機器などでは、アプリケーションプログラムとシステムソフトウェアは明確に分離されていない。オペレーティングシステムが登場した後でも、当初はネットワーク、ユーザーインターフェースマルチタスクなどはアプリケーションプログラムの領域であった。

現在のオペレーティングシステムでも、付属するゲームなどは製品上はオペレーティングシステムの一部だが、技術的にはアプリケーションプログラムである。また狭義には、オペレーティングシステムの中でも特にカーネルがシステムプログラムであるが、ユーザーインターフェースである各種シェルや、ネットワーク機能などを含む場合もある。また個々のハードウェア用のドライバーは、オペレーティングシステムに付属する場合、そのハードウェアに付属する場合などがある。

マイクロソフト社に対する独占禁止法訴訟では、ウェブブラウザ(Internet Explorer)がオペレーティングシステム(Microsoft Windows)に含まれるかどうか、分離可能かどうかが議論となった。

システムプログラミング[編集]

システムプログラミング: System programming)は、システムソフトウェアのプログラミングを指す。以下では、オペレーティングシステムやデバイスドライバの開発におけるシステムプログラミングについて述べる。アプリケーションソフトウェアのプログラミングとの主な違いは、ハードウェアとの関わりが大きい点である。他にも以下のような特徴がある。

システムプログラミングはアプリケーションプログラミングとかなり異なるため、プログラマはそれぞれの領域に特化する傾向がある。

アプリケーションプログラミングで使用するような巧妙かつ高機能なライブラリを提供する側であるため、システムコールという非常に原始的なライブラリまでしか使用できない。高い実行効率が求められるため、プログラマーにはアルゴリズムとデータ構造に関する深い知識が要求される。

システムプログラミングでは、プログラミングに利用できる道具が制限されることが多い。ガベージコレクションは一般的ではないし、デバッグが困難な場合もある。ランタイムライブラリはあったとしても貧弱で、あまりエラーチェックをしない。このような制限があるため、モニタリングデータロギングといった技法が使われることが多い。オペレーティングシステム(特にカーネル)はそのようなロギングを多用している。

古くは、システムプログラマは例外なくアセンブリ言語を使っていた。高水準言語をシステムソフトウェアに使った初期のものとしては、バロース B5000ALGOLMulticsPL/Iがある。1960年代後半から、BLISSBCPLC言語などが使われるようになり、UNIXの普及もあって1980年代にはそれが一般化した。Mac OS XI/O Kitドライバなどでは、Embedded C++ が使われることもある。

オペレーティングシステムやネットワーク関連の実装ではシステムプログラミングが必要となる(例えば、仮想記憶を実装する場合やデバイスドライバを実装する場合など)。

関連項目[編集]

脚注[編集]

外部リンク[編集]