|
===================================== 〔語彙分解〕的な部分一致の検索結果は以下の通りです。
システムソフトウェア()は、コンピュータのハードウェアを管理・制御するなど、コンピュータの稼動や使用そのものをサポートするためのソフトウェア全般を指す用語である。 例としてオペレーティングシステム (OS) のうちカーネルやデバイスドライバ、シェルがある。他に、ミドルウェアやライブラリ、コンパイラやインタプリタなどのプログラミング言語処理系、更にはファームウェア類も含む場合がある。 対義語はアプリケーションソフトウェア(アプリケーション、あるいは一般に言う和製英語の「ソフト」)である。 なお、例えばオペレーティングシステムに付属する時計やゲームなどは、製品パッケージ上は「オペレーティングシステム」の一部だが、技術的・構造的にはアプリケーションソフトウェアであり、オペレーティングシステム(システムソフトウェア)では無い。 日本の大手旧来マスメディアなどは、「オペレーティングシステム」の言い換え語として「基本ソフト」を使っているが、語感としては「システムソフトウェア」のほうが「基本ソフト」に相当する(なお対になっている語としては「アプリケーション(応用)ソフト」の対が「基本ソフト」である)。 == システムプログラミング == システムプログラミング()は、システムソフトウェアのプログラミングを指す。以下では、オペレーティングシステムやデバイスドライバの開発におけるシステムプログラミングについて述べる。アプリケーションソフトウェアのプログラミングとの主な違いは、ハードウェアとの関わりが大きい点である。他にも以下のような特徴がある。 * プログラマはハードウェアやその他のシステムの特徴を前提として、それらを利用してコードを作成する。例えば、そのハードウェアで効率がよいとわかっているアルゴリズムを採用したりする。 * 以下のような低レベルなプログラミング言語が使われることが多い。 * リソースに制限のある環境で動作可能な言語を使う。 * 効率がよく、実行時オーバーヘッドの小さい言語を使う。 * ランタイムライブラリが非常に小さいか、全くライブラリを持たない言語を使う。 * メモリアクセスや制御構造を直接制御できる。 * プログラムの一部を直接アセンブリ言語で書くことが出来る。 * リソースが制限されているためデバッガが使えない場合もあり、そうするとデバッグが困難になる。このため、エミュレータ上でデバッグを行ったりする。 システムプログラミングはアプリケーションプログラミングとかなり異なるため、プログラマはそれぞれの領域に特化する傾向がある。 アプリケーションプログラミングで使用するような巧妙かつ高機能なライブラリを提供する側であるため、システムコールという非常に原始的なライブラリまでしか使用できない。高い実行効率が求められるため、プログラマーにはアルゴリズムとデータ構造に関する深い知識が要求される。 システムプログラミングでは、プログラミングに利用できる道具が制限されることが多い。ガベージコレクションは一般的ではないし、デバッグが困難な場合もある。ランタイムライブラリはあったとしても貧弱で、あまりエラーチェックをしない。このような制限があるため、モニタリングやデータロギングといった技法が使われることが多い。オペレーティングシステム(特にカーネル)はそのようなロギングを多用している。 古くは、システムプログラマは例外なくアセンブリ言語を使っていた。高水準言語をシステムソフトウェアに使った初期のものとしては、バロース B5000のALGOL、MulticsのPL/Iがある。1960年代後半から、BLISS、BCPL、C言語などが使われるようになり、UNIXの普及もあって1980年代にはそれが一般化した。Mac OS XのI/O Kitドライバなどでは、Embedded C++ が使われることもある。 オペレーティングシステムやネットワーク関連の実装ではシステムプログラミングが必要となる(例えば、仮想記憶を実装する場合やデバイスドライバを実装する場合など)。 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「システムソフトウェア」の詳細全文を読む 英語版ウィキペディアに対照対訳語「 System software 」があります。 スポンサード リンク
|