システムソフトウェア

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

システムソフトウェア: System Software)は、コンピュータハードウェアを管理・制御するなど、コンピュータの稼動や使用そのものをサポートするためのソフトウェア全般を指す用語である。

例としてオペレーティングシステム (OS) のうちカーネルデバイスドライバシェルがある。他に、オペレーティングシステムの基本機能を拡張する為のソフトウェア(ミドルウェア)や、コンパイラインタプリタなどの言語処理系のソフトウェア、更にはROMなどの集積回路に格納されたファームウェアも含む場合がある。

対義語はアプリケーションソフトウェア(アプリケーション、あるいは一般に言うソフト)である。

なお、例えばオペレーティングシステムに付属する時計やゲームなどは、製品パッケージ上は「オペレーティングシステム」の一部だが、技術的・構造的にはアプリケーションソフトウェアであり、オペレーティングシステム(システムソフトウェア)では無い。

日本の大手旧来マスメディアなどは、「オペレーティングシステム」の言い換え語として「基本ソフト」を使っているが、語感としては「システムソフトウェア」のほうが「基本ソフト」に相当する(なお対になっている語としては「アプリケーション(応用)ソフト」の対が「基本ソフト」である)。

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

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

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

アプリケーションプログラミングで使用するような巧妙かつ高機能なライブラリを提供する側であるため、基本的にはシステムコールという非常に原始的なライブラリまでしか使用できない。

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

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

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

関連項目[編集]

脚注[編集]

外部リンク[編集]