C言語学習ポータル(無料版) 学習コンテンツ プログラムとは何か CPUとメモリの模式図

📜 プログラムとは何か

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の中にも、ごく少量の超高速な置き場がある」とだけ知っておけば十分です。速い置き場ほど小さく、大きい置き場ほど遅い——この関係はコンピュータのあらゆる場所に現れる法則で、プログラムの速さを考えるときの基本になります。

要点まとめ

アプリで演習問題まで解く(無料・登録不要)

この項目に出てくる用語

CPUしーぴーゆー

コンピュータの頭脳にあたる部品。メモリから命令とデータを取り出し、計算や判断を行って結果をまた書き戻す仕事を、目にも止まらぬ速さで繰り返している。現代のCPUは1秒間に数十億回もこのサイクルを繰り返している。

メモリめもり

プログラムやデータを一時的に保管しておく場所。番地(アドレス)のついた小さな箱がずらりと並んだ、巨大なロッカーのような構造をしている。電源を切ると中身が消えてしまう、いわば一時的な記憶場所にあたる。

同じトラックのほかの項目

コンピュータは何をする機械かコンピュータが「超高速だが命令どおりにしか動かない機械」であることを、自分の言葉で説明できる プログラムとは「手順書」であるプログラムが満たすべき3条件(順序・明確さ・有限)を理解し、曖昧な指示との違いを説明できる ソースコードから機械語へ——コンパイルの旅ソースコード・コンパイラ・機械語の関係と、コンパイルという工程の役割を説明できる 命令実行サイクル(Fetch-Decode-Execute)CPUが命令を1つずつ取り出して実行する繰り返しで動いていることを理解する プログラミング言語の地図とCの位置低級言語・高級言語の違いを理解し、数ある言語の中でのC言語の位置づけを説明できる なぜ最初にC言語なのかAI時代にC言語を最初に学ぶ意味を、自分なりの理由として持てるようになる 0と1ですべてを表す——2進数の入口2進数の仕組みを理解し、簡単な2進数と10進数の相互変換ができる
‹ ソースコードから機械語へ——コンパイルの旅 命令実行サイクル(Fetch-Decode-Execute) ›

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

完全版(BOOTH)を見る

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

Web版 / BOOTH