開いたファイルは保存場所から作業場所へ移される

文書ファイルを開くとき、コンピュータはSSDなどの補助記憶装置に保存された内容を主記憶装置へ読み込みます。アプリケーションのプログラムも、実行に必要な部分が主記憶装置に置かれます。CPUは、そこから命令やデータを取り出して処理します。編集結果を保存すると、変更された内容が補助記憶装置へ書き込まれ、電源を切った後も残る状態になります。

この流れから、主記憶装置は「作業中の情報を置く場所」、補助記憶装置は「情報を保管する場所」と考えられます。机と書棚にたとえると、書棚から資料を取り出して机の上で作業し、終わった資料を書棚へ戻す関係に近いものです。ただし、実際のデータは物体のように移動して元の場所から消えるとは限りません。読み込みでは通常、保存済みの内容を残したまま、同じ内容が主記憶装置にも用意されます。

保存していない編集内容は主記憶装置にだけ存在することがあります。その状態で電源が失われると、編集内容を復元できない場合があります。「画面に表示されていること」と「補助記憶装置に保存されていること」は同じではありません。

RAMとSSDは「容量」だけでは比べられない

主記憶装置には一般にRAMが使われます。RAMは Random Access Memory の略で、記憶位置を指定してデータを読み書きできる装置です。現在広く使われる主記憶用RAMは、電力の供給が止まると内容を保てない揮発性の記憶装置です。その代わり、補助記憶装置より高速に読み書きでき、実行中の処理に向いています。

補助記憶装置にはSSD、ハードディスク、USBメモリ、メモリーカードなどがあります。これらは電源を切っても内容を保持できる不揮発性の記憶装置で、文書、画像、アプリケーションなどの長期保存に使われます。SSDは半導体メモリを利用し、ハードディスクは磁気ディスクを利用するため、内部の仕組みは異なります。それでも、主記憶装置より大容量のデータを継続して保存するという役割は共通しています。

製品仕様に「メモリ16GB、SSD512GB」のように書かれていても、二つは交換できる同種の容量ではありません。主記憶の容量は同時に扱いやすいプログラムやデータの量に関係し、補助記憶の容量は保存できるファイルなどの量に関係します。SSDの空きが多くてもRAMそのものが増えるわけではなく、RAMを増やしても保存領域が同じだけ増えるわけではありません。

CPUに近いほど小さく速い記憶の階層

記憶装置には、速さ、容量、価格などの異なる性質があります。すべての記憶を一種類の装置だけでまかなうのではなく、複数の段階を組み合わせる考え方を「記憶階層」といいます。CPU内部のレジスタ、CPUの近くにあるキャッシュメモリ、主記憶装置、補助記憶装置という順に、用途の異なる記憶領域が使われます。

レジスタは、CPUが計算途中の値や命令の位置などを置く、ごく小さく高速な領域です。キャッシュメモリは、近いうちに再び使われそうな命令やデータを一時的に保持し、CPUが主記憶装置から届くのを待つ時間を減らします。主記憶装置はキャッシュより大きな作業領域を提供し、補助記憶装置はさらに多くの情報を保存します。このように、少量の高速な領域と大容量の保存領域を組み合わせて、処理速度と容量の両方を支えています。

キャッシュも主記憶も一時的にデータを置きますが、同じものではありません。キャッシュへのデータ配置は主にハードウェアが管理し、主記憶は実行中のプログラムが利用する中心的な領域です。また、ブラウザが補助記憶装置へ保存する一時ファイルも「キャッシュ」と呼ばれます。名前が同じでも、CPUのキャッシュメモリとは場所と目的が異なります。

主記憶が足りないとOSは補助記憶を借りる

複数のアプリケーションを開くと、それぞれが主記憶を使います。オペレーティングシステムは、どのプログラムにどの領域を割り当てるかを管理し、別のプログラムの領域を誤って書き換えないように保護します。使い終わった領域は解放され、別の処理に再利用されます。

主記憶の空きが少なくなったとき、OSはすぐには使わない内容の一部を補助記憶装置へ退避させることがあります。補助記憶の一部を主記憶の延長のように扱う仕組みが仮想記憶です。退避した内容が再び必要になれば主記憶へ戻します。これにより、物理的な主記憶だけでは収まりにくい処理も動かせます。

ただし、補助記憶装置への読み書きは主記憶より遅いため、退避と復帰が頻繁になると動作が重くなります。主記憶の不足を補えることと、主記憶と同じ速さで使えることは別です。動作が遅い原因もメモリ不足だけとは限らず、CPUの負荷、補助記憶の速度、通信状態などを分けて考える必要があります。

「メモリ」は文脈によって指す装置が変わる

日常の製品説明で単に「メモリ」と書く場合、パソコンではRAM、つまり主記憶装置を指すことが多くあります。一方、「USBメモリ」や「フラッシュメモリ」のメモリは、電源を切っても内容を保つ半導体記憶を指します。スマートフォンの「メモリ」と「ストレージ」という表記でも、前者を主記憶、後者を保存領域として区別するのが一般的です。言葉だけで判断せず、RAMなのか保存領域なのかを確認する必要があります。

容量はバイトを基準に表され、GBやTBなどの単位が使われます。データそのものは二進法のビット列として保持され、8ビットをまとめた単位が1バイトです。なお、容量の接頭語を10の累乗で扱う表記と、2の累乗を基準にした値を扱う表記があるため、機器に表示された容量とOS上の数値が一致しないことがあります。これは、必ずしも記憶領域が失われたことを意味しません。

さらに、RAMの「ランダム」は内容が無作為という意味ではありません。記憶されたデータの位置を指定して、順番にたどらなくても読み書きできる性質を表します。「ランダムなデータを入れる装置」という理解は誤りです。身近な「メモリ」という一語の中に、役割の違う複数の記憶技術が含まれていることが、この用語の少し紛らわしいところです。