メモリの理想と現実
理想は無限の容量を備え、瞬時にアクセスできるのが望ましいです。
ですが現実のメモリは何階層にもなっており、深く行けばいくほどメモリの容量が大きくなり、読み込みが遅くなります。
全体の流れ
- プログラムファイル実行
- 仮想アドレスにアクセス
- TLBにアクセス(該当する物理アドレスがあればアクセス)
- MMUのページテーブルに基づき、仮想アドレスから物理アドレスに変換し、物理アドレスにアクセス
- CPUにデータ渡す
下記が全体を掴むのに最高です。
【図解】初心者向けユーザー空間とカーネル空間,システムコール,MMU/メモリ保護,の仕組み│SEの道標
仮想記憶
プログラムから見たメモリのことで、実際のメモリより多くメモリがあるように見せる技術をさします。
OSはメモリをページという一定のサイズごとにロードしたり追い出したり(これをスワップやページングという)することで,物理メモリのサイズを隠蔽します。
仮想記憶とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典
MMU(Memory Management Unit: メモリ管理ユニット)
仮想記憶のアドレスと物理メモリのアドレスの変換を行います。(仮想記憶管理機能)
CPUに組み込まれています。
MMU(メモリマネージメントユニット) | APS|半導体技術コンテンツ・メディア
ページテーブル
MMUはページテーブルを持っています。
ページテーブルとは、仮想アドレスを物理アドレスを対応づける表のことです。
ページテーブル - Wikipedia
ページ
仮想記憶のブロックのことを指します。
下記がわかりやすかったです。
決まった大きさのページ単位でメモリを管理するやり方
ページング方式とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典より引用
ページフォールト
アクセスしたページが主記憶に存在しない場合に発生します。
アドレス変換バッファ(TLB)
CPUが仮想アドレスと論理アドレスとを対応させた情報を一時的に保管しておくバッファメモリのことです。
仮想アドレスから物理アドレスへの変換の高速化を図ります。
ページテーブルにとってのキャッシュの役割をしてくれます。
TLBとは何? Weblio辞書
コンピュータアーキテクチャ(6)
The TLB and cache implement the process of going from a virtual address to a data item in the Intrinsity
Fast MATHより引用
メモリアドレスの構成
ページ番号とページ内オフセットと呼ばれるフィールドから構成されます。
オフセットとは、ページ内アドレスのことを指します。
魔術師見習いのノート
仮想記憶とキャッシュ違い
スワップ
スワップアウト
物理メモリで使用している領域をスワップ領域に追い出すこと。
スワップイン
スワップアウトにより追い出された領域をまた物理メモリの領域に戻すこと。
HDDを使う領域=スワップ
【図解】仮想記憶(仮想メモリ)の本質や仕組み、メリット 〜スワップ、MMU、ページングテーブルについて〜│SEの道標より引用
その他参考になった記事
参照の局所性 - Wikipedia
時間的局所性、空間的局所性とは?
6章 仮想記憶 (Virtual Memory)
コンピュータアーキテクチャ