トラック1・📜プログラムとは何か

CPUとメモリの模式図

読む目安 約12分・ゴール:CPUとメモリの役割分担を机の比喩で説明でき、メモリが「番地つきのロッカー」であることを理解する

アプリでこのトピックを学ぶ(無料・登録不要)

このトピックの要点

コンピュータの中には無数の部品がありますが、プログラムを学ぶうえで主役は2つだけです。CPUとメモリです。

机で作業する場面を思い浮かべてください。

作業する人は、机の上に出ているものしか直接いじれません。引き出しの中身を使いたければ、まず机に出す必要があります。プログラムやデータが「起動」するとき、実際にストレージからメモリへ運ばれています。

CPUが作業する人、メモリが机、ストレージが引き出しに例えられた模式図
CPUが作業する人、メモリが机、ストレージが引き出しに例えられた模式図

メモリは番地つきロッカーの列

メモリの中身をもう少し細かく見ましょう。メモリは、同じ大きさの小さな箱が一直線にずらりと並んだものです。ちょうどコインロッカーの壁のようなイメージで、箱1つは1バイト(0〜255の数を1個入れられる大きさ)です。

そして重要なのは、すべての箱に通し番号が振ってあるという点です。0番、1番、2番……とすべての箱に番号があり、この番号をアドレス(番地)と呼びます。CPUは「1024番地の値を持ってこい」という言い方でメモリを使います。名前ではなく番地で呼ぶ、これがメモリの世界の流儀です。

ビット番地があるから、何万個あっても迷子にならないんだ。この話、あとでポインタのときにもう一度出てくるよ。

この「番地」は、第2部のポインタで主役になります。今の段階では、メモリの箱には名前ではなく番号がついているという絵を頭に入れておくだけで十分です。C言語で int a; と書くとき、実際には空いているロッカーを1つ確保して、そこに a という呼び名を貼っているだけ、という見方ができるようになります。

数の感覚もつかんでおきましょう。「メモリ8GB」のパソコンなら、箱がおよそ80億個並んでいることになります。文字1つがだいたい1〜3個の箱を使うので、80億個というのは相当な広さです。それでも、写真や動画を何十枚も開けばすぐ足りなくなります。机が広いほど、同時にたくさんの作業を広げられる——メモリを増やすと動作が快適になるのは、そういう理屈です。

電源を切ると机の上は消える

メモリのもう一つの性質は、電源を切ると中身がすべて消えることです(揮発性といいます)。作業中の書類は、机の上に置きっぱなしでは残りません。だからファイルに保存する、という操作が必要になります。

なお、CPUの内部にはさらに小さくて速い置き場(レジスタ、キャッシュ)があります。作業する人の手のひらと手元のメモ帳のようなものです。今は「CPUの中にも、ごく少量の超高速な置き場がある」とだけ知っておけば十分です。速い置き場ほど小さく、大きい置き場ほど遅い——この関係はコンピュータのあらゆる場所に現れる法則で、プログラムの速さを考えるときの基本になります。

アプリでこのトピックを学ぶ(無料・登録不要)

確認問題

確認問題 1

メモリの説明として正しいものはどれでしょう。

  1. 電源を切っても中身がそのまま残る
  2. 計算そのものを行う部品である
  3. 箱には番地はなく、人が付けた名前だけで管理されている
  4. 1バイトごとの箱が並んでいて、すべての箱に通し番号(番地)がついている
答えを見る

正解:D(1バイトごとの箱が並んでいて、すべての箱に通し番号(番地)がついている)

メモリは1バイトの箱がずらりと並んだもので、すべての箱に番地(アドレス)がついています。CPUは名前ではなく番地でメモリを呼びます。電源を切ると中身は消え(だから保存が必要)、計算を行うのはCPUの役目です。この「番地」の話は、第2部のポインタで主役になります。

確認問題 2

CPU・メモリ・ストレージ(SSD)を机の作業にたとえたとき、正しい組み合わせはどれでしょう。

  1. CPU=引き出し、メモリ=作業する人、ストレージ=机の上
  2. CPU=作業する人、メモリ=引き出し、ストレージ=机の上
  3. CPU=作業する人、メモリ=机の上、ストレージ=引き出し
  4. CPU=机の上、メモリ=作業する人、ストレージ=引き出し
答えを見る

正解:C(CPU=作業する人、メモリ=机の上、ストレージ=引き出し)

計算するのがCPU(作業する人)、いま使っているデータを広げておくのがメモリ(机の上)、使わないものをしまっておくのがストレージ(引き出し)です。作業する人は机の上のものしか直接いじれないので、ファイルを開くとストレージからメモリへ運ばれます。

「プログラムとは何か」の目次

  1. コンピュータは何をする機械か
  2. プログラムとは「手順書」である
  3. ソースコードから機械語へ——コンパイルの旅
  4. CPUとメモリの模式図
  5. 命令実行サイクル(Fetch-Decode-Execute)
  6. プログラミング言語の地図とCの位置
  7. なぜ最初にC言語なのか
  8. 0と1ですべてを表す——2進数の入口

もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。

完全版の販売ページは準備中です。

ほかのトラック

📚 姉妹教材:手を動かして覚える Linux 教材 — Linuxとインフラの仕組みを地図で学ぶ

Web版