C 言語 | コンピュータシステム開発 | プログラムの構造
プログラムが動作する仕組みと、アプリケーションやオペレーティングシステムなどのソフトウェアの種類について説明する。
ソフトウェアとプログラミング
C 言語以外のプログラミング経験があり、プログラムが何であるかを理解している場合は、この項目を読み飛ばしてもよい。
コンピューターのシステムはそれぞれ異なるが、すべてのコンピューターはソフトウェアと呼ばれる論理的な情報によって動いている。ソフトウェアとは、コンピューターが実行すべき処理手順や情報を記録したプログラムである。コンピューターが起動すると、プログラムが CPU に読み込まれ、決められた手順に従って電源が切れるまで実行される。コンピューターはソフトウェアなしでは動作できない。
CPU が読み取って処理するプログラムは、機械語と呼ばれる数値だけで表現されたデータで構成されている。それぞれの数値には CPU が定めた意味が割り当てられている。CPU は命令を読み込み、解釈し、実行する。次に読み込む命令の位置を判断して取得する動作をフェッチ(fetch)と呼ぶ。フェッチサイクルと命令実行サイクルを繰り返すことで、プログラムが動作する。
ただし、プログラマーが作成するソフトウェアの多くは、コンピューターの電源を入れた直後から動作するものではない。アプリケーションはアプリケーションソフトウェア、またはアプリケーションプログラムとも呼ばれ、業務処理など特定の目的のために作られたソフトウェアを指す。それでは、アプリケーションソフトウェアを実行できる状態になるまでに、どのような処理が行われるのだろうか。
コンピューターの電源を入れると、最初に決められたプログラムが実行される。ハードウェアの初期化が完了すると、指定された記憶装置からプログラムを読み込む。この一連の動作を起動、またはブートと呼ぶ。ブート処理の詳細を知る必要があるプログラマーはごく一部である。
ブート処理が完了すると、オペレーティングシステムが起動する。オペレーティングシステムは、物理的なコンピューターの制御、システム管理、基本的な作業環境を提供するソフトウェアであり、基本ソフトウェアとも呼ばれる。オペレーティングシステムがなければコンピューターを利用できない。代表的なオペレーティングシステムには Microsoft Windows、Solaris、HP-UX、OS/2、Linux などがある。
私たちが作るソフトウェアは、オペレーティングシステムを基盤として動作する。オペレーティングシステムもプログラムであるため、個人で作成することもできるが、それには相応の開発経験と、情報科学やシステムに関する高度な知識が必要である。一方、アプリケーションソフトウェアはオペレーティングシステム上で実行されるため、通常はハードウェアの詳細な知識を必要としない。オペレーティングシステムが提供する機能を使うことで、目的のプログラムを効率よく構築できる。
業務アプリケーション、ゲームソフト、さらにはウイルスも、何らかの基本ソフトウェア上で動作するアプリケーションソフトウェアである。
この本では「システム」という言葉を頻繁に使う。これは単にオペレーティングシステムを略したものではなく、ハードウェアとソフトウェアで構成される情報処理環境全体を意味する。たとえば、オペレーティングシステムのように動作する大規模なアプリケーションを動かすため、中間言語のようなデータを生成する目的で C 言語が使われることもある。C 言語の動作対象は必ずしもオペレーティングシステムとは限らないため、この本では抽象的な表現である「システム」を使用する。