WisdomSoft - for your serial experiences.

1.1 プログラムの仕組み

プログラムが動作する仕組みと、アプリケーションやオペレーティングシステムなどソフトウェアの種類について解説します。

1.1.1 ソフトウェアとプログラミング

もし、すでに C 言語以外のプログラミング経験があり、プログラムがどのようなものかを理解しているのであれば、この項目は読み飛ばしてください。

すべてのコンピュータは、その仕組みこそ違えど「ソフトウェア」と呼ばれる論理的な情報によって動いています。 ソフトウェアとは、コンピュータが実行するべき処理の手順や情報を記録したプログラムのことです。 コンピュータが起動したそのときから、決められた手順に従ってプログラムが CPU に読み込まれ、コンピュータの電源が切れるまで実行され続けているのです。 コンピュータは、ソフトウェアなしに動くことはできません。

CPU が読み込んで処理しているプログラムは、機械語と呼ばれる数値だけで表現されたデータで構成されています。 この数値にはそれぞれ CPU が定めている意味が割り当てられていて、CPU は命令を読み込み、読み込まれた命令を解析して実行しています。 CPU が次に読み込むべき命令の位置を判断してプログラムを取り込む動作のことをフェッチと呼びます。 このフェッチサイクルと、命令実行サイクルを繰り返すことで、正しくプログラムが動作しているのです。

しかし、プログラマが作るソフトウェアのほとんどはアプリケーションであり、コンピュータの電源を入れた直後から動作するようなプログラムを作ることはありません。アプリケーションは応用ソフトウェア、または応用プログラムとも呼ばれ、コンピュータで業務処理など、特定の利用目的を持って作られたソフトウェアを指します。では、応用ソフトウェアを実行するまでの過程はどのようになるのでしょうか。

コンピュータの電源を入れると、最初に決められたプログラムが実行されます。そして、ハードウェアの初期化処理が終了した時点で、定められた記録装置からプログラムを読み取ります。これらの一連の動作をブートと呼びますが、ブート処理について詳細を知っているプログラマはごく一部であり、一般のプログラマは知る必要がありません。

起動処理が終了すると、オペレーティングシステム 立ち上がります。 オペレーティングシステムとは、物理的なコンピュータの制御やシステム管理、基本的な操作環境などを提供するソフトウェアのことで、基本ソフトウェアとも呼ばれます。オペレーティングシステムがなければ、コンピュータを使うことはできません。代表的なオペレーティング システムには Microsoft Windows や Solaris、HP-UX、OS/2、Linux などがあります。

私たちが作るソフトウェアは、オペレーティングシステムを土台とします。もちろん、オペレーティングシステムもプログラムなので、個人でも作ることは可能ですが、そのためには相応の開発経験と、情報科学やシステムに対する高度な知識が必要です。しかし、応用ソフトウェアは、オペレーティングシステムの上で実行されるため、ハードウェアの知識はそれほど必要ありません。オペレーティングシステムが提供する機能を使って、効率よく目的のプログラムを建築できるというわけです。

ビジネスアプリケーションや、ゲームソフト、果てはウィルスすらも、何らかの基本ソフトウェアの庇護の下で実行される応用ソフトウェアなのです。

一方、本書では「システム」という言葉も多用していますが、これはオペレーティングシステムの単純な省略ではなく、ハードウェアとソフトウェアで構成される情報処理環境全体を意図しています。例えば、オペレーティングシステムのように振舞う巨大な応用ソフトウェアを動かす中間言語と呼ばれるデータを生成するために C 言語が使われる可能性もあります。このように C 言語の動作対象が必ずしもオペレーティングシステムとは限らないため、システムという抽象表現を好んで使っているのです。