Help us understand the problem. What is going on with this article?

【SRE】お前メモリのこと全然詳しくないじゃん

はい、自分のことです。
徐々に理解していきます。

メモリの理想と現実

理想は無限の容量を備え、瞬時にアクセスできるのが望ましいです。
ですが現実のメモリは何階層にもなっており、深く行けばいくほどメモリの容量が大きくなり、読み込みが遅くなります。

全体の流れ

  1. プログラムファイル実行
  2. 仮想アドレスにアクセス
  3. TLBにアクセス(該当する物理アドレスがあればアクセス)
  4. MMUのページテーブルに基づき、仮想アドレスから物理アドレスに変換し、物理アドレスにアクセス
  5. CPUにデータ渡す

下記が全体を掴むのに最高です。
【図解】初心者向けユーザー空間とカーネル空間,システムコール,MMU/メモリ保護,の仕組み│SEの道標

仮想記憶

プログラムから見たメモリのことで、実際のメモリより多くメモリがあるように見せる技術をさします。
OSはメモリをページという一定のサイズごとにロードしたり追い出したり(これをスワップやページングという)することで,物理メモリのサイズを隠蔽します。

image.png【図解】初心者向けユーザー空間とカーネル空間,システムコール,MMU/メモリ保護,の仕組み│SEの道標より引用

仮想記憶とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

MMU(Memory Management Unit: メモリ管理ユニット)

仮想記憶のアドレスと物理メモリのアドレスの変換を行います。(仮想記憶管理機能)
CPUに組み込まれています。
MMU(メモリマネージメントユニット) | APS|半導体技術コンテンツ・メディア

image.png
ファイル:MMU principle updated.png - Wikipediaより引用

ページテーブル

MMUはページテーブルを持っています。
ページテーブルとは、仮想アドレスを物理アドレスを対応づける表のことです。
ページテーブル - Wikipedia

ページ

仮想記憶のブロックのことを指します。
下記がわかりやすかったです。

決まった大きさのページ単位でメモリを管理するやり方
ページング方式とは|「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典より引用

ページフォールト

アクセスしたページが主記憶に存在しない場合に発生します。

アドレス変換バッファ(TLB)

CPUが仮想アドレスと論理アドレスとを対応させた情報を一時的に保管しておくバッファメモリのことです。
仮想アドレスから物理アドレスへの変換の高速化を図ります。
ページテーブルにとってのキャッシュの役割をしてくれます。
TLBとは何? Weblio辞書
コンピュータアーキテクチャ(6)

image.png
The TLB and cache implement the process of going from a virtual address to a data item in the Intrinsity
Fast MATH
より引用

メモリアドレスの構成

ページ番号とページ内オフセットと呼ばれるフィールドから構成されます。
オフセットとは、ページ内アドレスのことを指します。
魔術師見習いのノート

仮想記憶とキャッシュ違い

OSにおける仮想メモリとキャッシュメモリの違い

スワップ

スワップアウト

物理メモリで使用している領域をスワップ領域に追い出すこと。

スワップイン

スワップアウトにより追い出された領域をまた物理メモリの領域に戻すこと。

HDDを使う領域=スワップ
【図解】仮想記憶(仮想メモリ)の本質や仕組み、メリット 〜スワップ、MMU、ページングテーブルについて〜│SEの道標より引用

その他参考になった記事

参照の局所性 - Wikipedia
時間的局所性、空間的局所性とは?
6章 仮想記憶 (Virtual Memory)
コンピュータアーキテクチャ

sanoyo
自衛隊からソフトウェアエンジニア
https://note.com/yokosano
engineerlife
技術力をベースに人生を謳歌する人たちのコミュニティです。
https://community.camp-fire.jp/projects/view/280040
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away