C 言語 | コンピュータシステム開発 | ハードウェア構成
標準的なコンピューターのハードウェア構成と、その関係について説明する。
コンピューターの構造
ほかのプログラミング言語の経験やコンピューターを組み立てた経験があり、ハードウェアを理解している場合は、開発環境とコンパイラーの記事まで読み飛ばしてもよい。
C 言語は高級言語である一方、低級言語に近い言語でもある。そのため、C 言語を使いこなすにはコンピューターに関する知識が必要である。ここでは、コンピューターシステムの基本を説明する。
コンピューターはデータを入力し、適切な方法で計算して結果を出力する道具である。この処理に必要な最小限の装置は、入力装置、出力装置、演算装置、制御装置、記憶装置の 5 つである。
表 1. コンピューターの 5 大要素
| 装置 | 説明 |
|---|---|
| 入力装置 | コンピューターにデータを送る装置 |
| 出力装置 | 計算結果を出力する装置 |
| 演算装置 | プログラムに従ってデータを計算する装置 |
| 制御装置 | ほかの装置の動作を制御する装置 |
| 記憶装置 | データを保存する装置 |
図 1. コンピューターの 5 大要素と関係

入力装置には、キーボード、マウスやペン、タッチスクリーンなどのポインティングデバイス、スキャナー、OMR、タイマーなどがある。代表的な出力装置はディスプレイだが、プリンターやプロッターなどもある。
演算装置と制御装置を合わせたものを中央処理装置、つまり CPU と呼ぶ。CPU は入出力を管理し、コンピューター全体を制御する。
記憶装置は、データや計算結果を保存する。CPU と直接接続された重要な記憶装置を主記憶装置と呼ぶ。プログラムは主記憶装置にデータや計算結果を保存する。ハードディスクや ROM など、ほかの記憶装置は補助記憶装置と呼ぶ。主記憶装置は電源を切るとデータが消えるが、高速にアクセスできる。補助記憶装置は電源を切ってもデータを保持できるが、アクセス速度は遅い。
記憶装置にはバイナリーデータが保存される。2 進数の 1 桁をビットと呼ぶが、CPU は一般により大きな単位で処理する。最小の処理単位をバイトと呼び、通常は 1 バイトを 8 ビットとして扱う。
厳密には、1 バイトが常に 8 ビットとは限らない。バイトのサイズはコンピューターアーキテクチャによって異なる。8 ビットを明確に示す単位として、ネットワーク分野ではオクテットを使う。この本では原則として 1 バイトを 8 ビットとして扱う。
記憶装置では、各バイトにアドレスが割り当てられる。この数値をメモリーアドレスと呼ぶ。プログラムはメモリーアドレスを使って情報にアクセスする。この考え方は C 言語のポインターで重要になる。コンピューターが処理するすべてのデータには、その位置を識別するアドレスがあることを覚えておこう。