システムソフトウェア
出典: フリー百科事典『ウィキペディア(Wikipedia)』
システムソフトウェア(英: System Software)ないし基本ソフトウェアとは、コンピュータのハードウェアを管理・制御するなど、コンピュータを使う事そのものをサポートするためのソフトウェア全般を指す用語。コンピュータシステムの基本的な部分を制御する為に使用されるソフトウェアである。最も明らかな例としてオペレーティングシステム(OS)がある。他に、オペレーティングシステムの基本機能を拡張する為のソフトウェア(ミドルウェア)、コンパイラやインタプリタなどの言語処理系のソフトウェアも含まれる。なお、報道ではマイクロソフト社 ウィンドウズ 普及後は、基本ソフトをオペレーティングシステムと同義、または ウィンドウズ 自体として使用する場合があるが[1]、基本ソフト=マイクロソフト社のウィンドウズ(OSソフト)ではない。
対義語はアプリケーションソフトウェア(アプリケーション、あるいは一般に言うソフト)。システム、システム工学、システムエンジニアなどといった用語とは直接の関係はない。また、ROMなどの集積回路に格納されたシステムソフトウェアは、ファームウェアと呼ばれる。
目次 |
[編集] システムプログラミング
システムプログラミング(英: System programming)とは、システムソフトウェアのプログラミングを指す。アプリケーションソフトウェアのプログラミングとの主な違いは、ハードウェアとの関わりが大きい点である。他にも以下のような特徴がある。
- プログラマはハードウェアやその他のシステムの特徴を前提として、それらを利用してコードを作成する。例えば、そのハードウェアで効率がよいとわかっているアルゴリズムを採用したりする。
- 以下のような低レベルなプログラミング言語が使われることが多い。
- リソースに制限のある環境で動作可能な言語を使う。
- 効率がよく、実行時オーバーヘッドの小さい言語を使う。
- ランタイムライブラリが非常に小さいか、全くライブラリを持たない言語を使う。
- メモリアクセスや制御構造を直接制御できる。
- プログラムの一部を直接アセンブリ言語で書くことが出来る。
- リソースが制限されているためデバッガが使えない場合もあり、そうするとデバッグが困難になる。このため、エミュレータ上でデバッグを行ったりする。
システムプログラミングはアプリケーションプログラミングとかなり異なるため、プログラマはそれぞれの領域に特化する傾向がある。
システムプログラミングでは、プログラミングに利用できる道具が制限されることが多い。ガベージコレクションは一般的ではないし、デバッグが困難な場合もある。ランタイムライブラリはあったとしても貧弱で、あまりエラーチェックをしない。このような制限があるため、モニタリングやデータロギングといった技法が使われることが多い。オペレーティングシステム(特にカーネル)はそのようなロギングを多用している。
古くは、システムプログラマは例外なくアセンブリ言語を使っていた。1960年代後半に高級言語によるハードウェアサポートの試みにより、BLISS、BCPL、C言語などが使われるようになり、UNIXの普及もあって1980年代にはそれが一般化した。Mac OS XのI/O Kitドライバなどでは、Embedded C++ が使われることもある。
オペレーティングシステムやネットワーク関連の実装ではシステムプログラミングが必要となる(例えば、仮想記憶を実装する場合やデバイスドライバを実装する場合など)。
[編集] 関連項目
[編集] 脚注
- ^ 「ブログに挑戦してみよう! NHK趣味悠々」日本放送協会編集 日本放送出版協会編集 出版 /日本放送出版協会 ISBN /4-14-188425-1 2006.6

