僕は今まで特に何も考えずIT業界に入り、フレームワークや言語の文法に沿ってアプリを作ったりしていたが、コンピューターの基礎的な勉強を欠いていた。
最近J.Glenn Brookshearの入門コンピューター科学を読み始めひどく感動しているので、その内容をoutputして忘れないようにする。
コンピューターのメモリには大まかに3種類ある
1.CPU内部のレジスタ。
2.メインメモリ
3.マスストレージ
これらの違いを端的に述べる
マスストレージはCDや磁気ディスク、HDD、SSDなどの不揮発性のメモリが相当する。これらは長期間データを保存するのに適している。
メインメモリは揮発性であるが、CPUからアドレスを指定してマスストレージよりか素早くアクセスできる。
レジスタはCPUにより操作される一時的なデータ保管場所である。CPUが演算をするときはまずメインメモリからこのレジスタにデータを移す。ここにアクセスするのが最速。
例えばCのコンパイル後のファイル(a.outなど)は普通マスストレージに保存されている。これを実行するとそれがメインメモリに移され、CPUがそれを実行する。
まとめると
容量 レジスタ < メインメモリ < マスストレージ
速度 レジスタ > メインメモリ > マスストレージ
こんな感じ