
📝 2026年10月6日に全面リライトしました
2023年7月に公開した記事を、「つくって学ぶ」の趣旨に合わせて書き直した。コマンドとCプログラムで、メモリの種類と性質を実際に体験できる内容になっている
はじめに
メモリには、たくさんの種類がある。基本情報技術者試験でも押さえておきたいポイントは、次の3つである。
- RAMとROMの違い
- DRAMとSRAMの違い
- フラッシュメモリ
文章を読むだけでなく、GitHub Codespaces(Ubuntu)で実際に確かめていく。コードは、筆者のGitHubリポジトリ pc-labo-hands-on の memory/ フォルダにまとめてある。

RAMとROMの違い
| RAM | ROM | |
|---|---|---|
| 正式名 | Random Access Memory | Read Only Memory |
| 電源を切ると | データが消える(揮発性) | データが残る(不揮発性) |
| 書き込み | 自由にできる | 基本は読み出し専用 |
| 主な用途 | 主記憶装置、キャッシュメモリ | 起動用のプログラム(ファームウェア)など |
体験1:メモリの量を見る
free -hOSが使えるメモリ(RAM)の合計、使用中、空きが表示される。
体験2:RAMとディスクの違いを見る
Linuxには、RAMを利用してファイルを保持する tmpfs という仕組みがあり、通常 /dev/shm にマウントされている。
echo "RAMに書いた" > /dev/shm/ram.txt
echo "ディスクに書いた" > ~/disk.txt
df -h /dev/shm ~df の出力では、2つが別の領域だとわかる。/dev/shm のファイルは、再起動すると消える。ディスク上のファイルは残る。これが、揮発性と不揮発性の違いである。
DRAMとSRAMの違い
RAMには、大きく分けて2種類ある。
- DRAM(Dynamic RAM):データが消えないように、1秒間に何度も電荷を加え直す(リフレッシュ)必要がある。安価で大容量にしやすく、主記憶装置に使われる
- SRAM(Static RAM):リフレッシュが不要で、高速である。高価で大容量にしにくく、キャッシュメモリに使われる
体験3:キャッシュの大きさを見る
lscpu | grep -i cacheL1、L2、L3といったキャッシュの大きさが表示される。数MB程度と、主記憶に比べてとても小さいことがわかる。環境によっては、表示されない場合がある。
体験4:キャッシュの効果をCで測る
同じ量のデータを読むとき、読み方でキャッシュの効き方が変わる。cache.c として保存する。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N (64 * 1024 * 1024) /* 整数6,400万個(約256MB) */
int main(void) {
int *a = malloc(sizeof(int) * (size_t)N);
if (a == NULL) return 1;
for (size_t i = 0; i < N; i++) a[i] = 1;
long sum = 0;
clock_t t = clock();
for (size_t i = 0; i < N; i++) sum += a[i];
printf("順番に読む : %.3f 秒\n", (double)(clock() - t) / CLOCKS_PER_SEC);
t = clock();
for (size_t s = 0; s < 16; s++)
for (size_t i = s; i < N; i += 16) sum += a[i];
printf("飛び飛びに読む: %.3f 秒\n", (double)(clock() - t) / CLOCKS_PER_SEC);
printf("sum = %ld\n", sum);
free(a);
return 0;
}gcc -O1 cache.c -o cache
./cacheどちらも同じ数の要素を読むが、順番に読むほうが速くなることが多い。メモリ上で近くにあるデータを連続して読むと、キャッシュの効果を受けやすいためである。
なお、差の大きさは、環境によって変わる。
なお、このプログラムは、約256MBのメモリを使う。
フラッシュメモリとは
電気的にデータを書き換えられる、不揮発性のメモリである。電源を切ってもデータが残るため、SSD、USBメモリ、SDカードの中身として使われている。ROMの仲間として扱われることもある。
まとめ
- RAMは揮発性、ROMは不揮発性である
- DRAMはリフレッシュが必要で主記憶に、SRAMは不要で高速なためキャッシュに使われる
- フラッシュメモリは、書き換えできる不揮発性メモリである
free、/dev/shm、lscpu、Cのプログラムで、その違いを確認できた
更新履歴
- 2026年10月6日:全面リライト(体験する内容に刷新)
- 2023年7月1日:初版公開




コメント