url: https://ja.wikipedia.org/wiki/%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%B3%E3%82%B0%E6%96%B9%E5%BC%8F
title: "ページング方式 - Wikipedia"
host: ja.wikipedia.org
favicon: https://ja.wikipedia.org/static/favicon/wikipedia.ico

paging は、OS においてメモリを ページ と呼ばれる小さな単位に分割し、ページごとに割当を行う。 論理メモリと物理メモリ空間をページ単位で page-table で紐づける。

ページという単位で割り当てることによって以下のメリットがある。

  • 物理メモリを連続的に確保しなくてよい
    • 物理メモリにおいて N アドレス連続して確保する、を各プロセスで行うと frag-mentation が発生する
    • よって、物理メモリ上では散らばった不連続のメモリをページサイズ単位で取得する
    • そうして集めた非連続性物理メモリを、仮想メモリ上に page-table で紐づけながら割り当てる
    • → 仮想メモリ上のプロセスからは1つの連続した仮想アドレスに見れるけど、OS 側から見ると不連続の物理メモリを利用しており、効率がいい
  • 各プロセスごとに独立した物理メモリを扱える
    • 各プロセスの仮想メモリ空間はページ単位で分離されている

ページサイズの計算方法

getconf でページサイズの単位がわかる。 下記の場合だと 4096 byte = 4KB

┌──(ganyariya㉿utmkali)-[~]
└─$ getconf PAGE_SIZE
4096