Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
LINUXにおけるメモリ管理の基本
構成
メモリとは?
仮想メモリ方式
アドレス変換
ページング
ページ置換
構成
メモリとは?
仮想メモリ方式
アドレス変換
ページング
ページ置換
メモリとは?
コンピュータにおいて
プログラムやデータを記憶する装置のこと
主記憶装置、メインメモリとも
プログラムを実行するとプログラム(機械語)が
外部記憶装置(HDDなど)からメモリに読み込まれる
CPUはメモリを直接読み書きしてプログラ...
構成
メモリとは?
仮想メモリ方式
アドレス変換
ページング
ページ置換
仮想メモリ方式(仮想記憶方式)とは
主記憶上のデータは物理アドレスとは別の
仮想アドレスによって管理される
仮想メモリ方式では
物理アドレス空間および仮想アドレス空間を
一定のサイズのページに分割して管理する
ページング方式
物理アドレスへの変換
実行しているプログラムがデータを更新する
ページテーブルを用いて
仮想アドレスを物理アドレスに変換
物理アドレスに存在するデータを取得
アドレス変換の仕組みは後のスライドで説明
仮想メモリ方式の利点(1)
アドレス空間を主記憶容量以上に見せられる
外部記憶装置(HDDなど)にスワップ領域を設け
仮想アドレスを割り当てる
主記憶の一部として使用可能
仮想メモリ方式の利点(2)
効率の良いメモリ割当て
メモリ割当ての管理手法
ビットマップ方式
割当単位ごとに
割当て済みor空きかを1bitで表す
リスト方式
空き領域を1つのリストとして管理
first fit, best fit, worst fitなど
メモリ領域割当てアルゴリズム(1)
first fit
要求サイズを満たす空き領域を
見つかった順に割り当てる
長所: 単純
短所: メモリ利用効率が悪い
メモリ領域割当てアルゴリズム(2)
best fit
要求サイズを満たす
最小の空き領域から割り当てる
長所: 比較的メモリ効率が良い
短所: 最適な空き領域を見つける
オーバーヘッドが大きい
メモリ領域割当てアルゴリズム(3)
worst fit
最大の空き領域に割り当てる
短所: メモリ利用効率が最も悪い
断片化
領域の割り当て、解放を繰り返すことで
断片化が起こる
メモリ領域の中に空き領域が多数存在する状態
1つの対策はメモリの詰め直し(デフラグ)
ページ化による効率の良い割当て
要求される領域をブロック(ページ)に分け
空いている領域のブロックに割り当てる
断片化によるロスを抑えられる
内部断片化が起こる
最後のページ内に未使用部分ができる
ページサイズを小さくすることである程度防げる
仮想メモリ方式の利点(3)
メモリ領域の保護
プロセスは独立した仮想アドレス空間を持つ
多重アドレス空間
複数プロセスが主記憶を安全に分割して使用可能
構成
メモリとは?
仮想メモリ方式
アドレス変換
ページング
ページ置換
アドレス変換
プログラム実行時にメモリアクセスが起きると
仮想アドレスを物理アドレスに変換する
MMU (memory management unit)がおこなう
仮想アドレス=仮想ページ番号+ページ内オフセット
物理アドレス=物理ページ番号+...
アドレス変換の流れ(1)
例: 1ページが4KB、32bitシステムの場合
仮想アドレス
仮想ページ番号(20bit)
ページ内オフセット(12bit)
物理アドレス
物理ページ番号(20bit)
ページ内オフセット(12bit)
アドレス変換の流れ(2)
アドレス変換
ページテーブルを参照して
仮想ページ番号(20bit)に対応する
物理ページ番号(20bit)を取得
物理ページ番号(20bit)と
ページ内オフセット(12bit)から
物理アドレス(32bit)を得る
ページフォルト
ページテーブルには存在ビットがある
存在ビットが1 => 主記憶上にページがある
存在ビットが0 => 主記憶上にページがない
存在ビットが0の場合、ページフォルトが発生する
ページフォルト発生時の説明は後のスライドで
TLB
ページテーブルは主記憶上に存在する
アドレス変換のたびにメモリアクセスが発生
高速化のため
ページテーブル専用のキャッシュを参照
TLB (translation lookaside buffer)
仮想アドレスをキー、
物理アドレスを値...
TLBの動作
アドレス変換(with TLB)
TLBを参照
仮想アドレスがキーとして存在した場合
対応する物理アドレスを取得
存在しなかった場合
主記憶上のページテーブルを参照
構成
メモリとは?
仮想メモリ方式
アドレス変換
ページング
ページ置換
ページイン
ページフォルトが発生すると
ページインがおこなわれる
プロセスの実行に割り込み、
補助記憶装置上のページを
主記憶装置の空きページに書き込む動作
ページテーブルの存在ビットを1に修正し
主記憶装置に読み込み後
アドレス変換をおこなう
ページアウト
主記憶上の空きページが少なくなると
ページアウトがおこなわれる
主記憶装置上のいずれかのページを
補助記憶装置上に追い出す動作
ページテーブルの存在ビットを0に修正し
補助記憶装置にページを退避
スラッシング
メモリが枯渇気味のとき
各プロセスでページングが頻発
スラッシングにより性能が大幅に低下
OOM Killerにより
メモリ使用量の多いかつ優先度の低いプロセスが
terminateされることも
ページキャッシュ
メモリが枯渇気味に見える場合がある
Linuxは一度アクセスしたデータを
可能な限りメモリに保持する
ページキャッシュ
キャッシュではなく
実際のメモリ使用量に着目
構成
メモリとは?
仮想メモリ方式
アドレス変換
ページング
ページ置換
ページ置換
物理ページ数には限りがある
どのページを主記憶上に保持し
どのページをスワップ領域に退避させるかの戦略
ページ置換or メモリスケジューリング
ページ置換のポリシー
グローバルポリシー
複数アドレス空間から追い出すページを決定
ローカルポリシー
1つのアドレス空間から追い出すページを決定
ページ置換アルゴリズム
NRU (Not Recently Used)
最近使われたページを残し
使われていないページをスワップアウトする
参照ビットと変更ビット
ページごとに参照ビットと変更ビットが存在
ページが参照されるとビットが1にセット
参照ビットは定期的にリセットされる
ページが変更されるとビットが1にセット
考えられる状態
参照ビットが0、変更ビットが0
参照ビットが0...
その他のページ置換アルゴリズム
FIFO (First-In First-Out)
セカンドチャンス
LRU (Least Recently Used)
まとめ
仮想アドレス方式により
実メモリ容量以上の領域を確保できる
ページング方式により
効率的なメモリ割当てが可能に
参考文献・スライド
参考書籍
スライド
野口健一郎(2002) IT Text オペレーティングシステム
坂井修一(2004) コンピュータアーキテクチャ
メモリ管理、アドレス空間、ページテーブル
メモリ管理(2)
Upcoming SlideShare
Loading in …5
×

Linuxにおけるメモリ管理の基本

2,857 views

Published on

部署内勉強会 資料

Published in: Technology
  • Login to see the comments

Linuxにおけるメモリ管理の基本

  1. 1. LINUXにおけるメモリ管理の基本
  2. 2. 構成 メモリとは? 仮想メモリ方式 アドレス変換 ページング ページ置換
  3. 3. 構成 メモリとは? 仮想メモリ方式 アドレス変換 ページング ページ置換
  4. 4. メモリとは? コンピュータにおいて プログラムやデータを記憶する装置のこと 主記憶装置、メインメモリとも プログラムを実行するとプログラム(機械語)が 外部記憶装置(HDDなど)からメモリに読み込まれる CPUはメモリを直接読み書きしてプログラムを実行 メモリ上のデータはアドレスによって管理される
  5. 5. 構成 メモリとは? 仮想メモリ方式 アドレス変換 ページング ページ置換
  6. 6. 仮想メモリ方式(仮想記憶方式)とは 主記憶上のデータは物理アドレスとは別の 仮想アドレスによって管理される 仮想メモリ方式では 物理アドレス空間および仮想アドレス空間を 一定のサイズのページに分割して管理する ページング方式
  7. 7. 物理アドレスへの変換 実行しているプログラムがデータを更新する ページテーブルを用いて 仮想アドレスを物理アドレスに変換 物理アドレスに存在するデータを取得 アドレス変換の仕組みは後のスライドで説明
  8. 8. 仮想メモリ方式の利点(1) アドレス空間を主記憶容量以上に見せられる 外部記憶装置(HDDなど)にスワップ領域を設け 仮想アドレスを割り当てる 主記憶の一部として使用可能
  9. 9. 仮想メモリ方式の利点(2) 効率の良いメモリ割当て
  10. 10. メモリ割当ての管理手法 ビットマップ方式 割当単位ごとに 割当て済みor空きかを1bitで表す リスト方式 空き領域を1つのリストとして管理 first fit, best fit, worst fitなど
  11. 11. メモリ領域割当てアルゴリズム(1) first fit 要求サイズを満たす空き領域を 見つかった順に割り当てる 長所: 単純 短所: メモリ利用効率が悪い
  12. 12. メモリ領域割当てアルゴリズム(2) best fit 要求サイズを満たす 最小の空き領域から割り当てる 長所: 比較的メモリ効率が良い 短所: 最適な空き領域を見つける オーバーヘッドが大きい
  13. 13. メモリ領域割当てアルゴリズム(3) worst fit 最大の空き領域に割り当てる 短所: メモリ利用効率が最も悪い
  14. 14. 断片化 領域の割り当て、解放を繰り返すことで 断片化が起こる メモリ領域の中に空き領域が多数存在する状態 1つの対策はメモリの詰め直し(デフラグ)
  15. 15. ページ化による効率の良い割当て 要求される領域をブロック(ページ)に分け 空いている領域のブロックに割り当てる 断片化によるロスを抑えられる 内部断片化が起こる 最後のページ内に未使用部分ができる ページサイズを小さくすることである程度防げる
  16. 16. 仮想メモリ方式の利点(3) メモリ領域の保護 プロセスは独立した仮想アドレス空間を持つ 多重アドレス空間 複数プロセスが主記憶を安全に分割して使用可能
  17. 17. 構成 メモリとは? 仮想メモリ方式 アドレス変換 ページング ページ置換
  18. 18. アドレス変換 プログラム実行時にメモリアクセスが起きると 仮想アドレスを物理アドレスに変換する MMU (memory management unit)がおこなう 仮想アドレス=仮想ページ番号+ページ内オフセット 物理アドレス=物理ページ番号+ページ内オフセット オフセットは仮想アドレスと物理アドレスで同じ
  19. 19. アドレス変換の流れ(1) 例: 1ページが4KB、32bitシステムの場合 仮想アドレス 仮想ページ番号(20bit) ページ内オフセット(12bit) 物理アドレス 物理ページ番号(20bit) ページ内オフセット(12bit)
  20. 20. アドレス変換の流れ(2) アドレス変換 ページテーブルを参照して 仮想ページ番号(20bit)に対応する 物理ページ番号(20bit)を取得 物理ページ番号(20bit)と ページ内オフセット(12bit)から 物理アドレス(32bit)を得る
  21. 21. ページフォルト ページテーブルには存在ビットがある 存在ビットが1 => 主記憶上にページがある 存在ビットが0 => 主記憶上にページがない 存在ビットが0の場合、ページフォルトが発生する ページフォルト発生時の説明は後のスライドで
  22. 22. TLB ページテーブルは主記憶上に存在する アドレス変換のたびにメモリアクセスが発生 高速化のため ページテーブル専用のキャッシュを参照 TLB (translation lookaside buffer) 仮想アドレスをキー、 物理アドレスを値として格納
  23. 23. TLBの動作 アドレス変換(with TLB) TLBを参照 仮想アドレスがキーとして存在した場合 対応する物理アドレスを取得 存在しなかった場合 主記憶上のページテーブルを参照
  24. 24. 構成 メモリとは? 仮想メモリ方式 アドレス変換 ページング ページ置換
  25. 25. ページイン ページフォルトが発生すると ページインがおこなわれる プロセスの実行に割り込み、 補助記憶装置上のページを 主記憶装置の空きページに書き込む動作 ページテーブルの存在ビットを1に修正し 主記憶装置に読み込み後 アドレス変換をおこなう
  26. 26. ページアウト 主記憶上の空きページが少なくなると ページアウトがおこなわれる 主記憶装置上のいずれかのページを 補助記憶装置上に追い出す動作 ページテーブルの存在ビットを0に修正し 補助記憶装置にページを退避
  27. 27. スラッシング メモリが枯渇気味のとき 各プロセスでページングが頻発 スラッシングにより性能が大幅に低下 OOM Killerにより メモリ使用量の多いかつ優先度の低いプロセスが terminateされることも
  28. 28. ページキャッシュ メモリが枯渇気味に見える場合がある Linuxは一度アクセスしたデータを 可能な限りメモリに保持する ページキャッシュ キャッシュではなく 実際のメモリ使用量に着目
  29. 29. 構成 メモリとは? 仮想メモリ方式 アドレス変換 ページング ページ置換
  30. 30. ページ置換 物理ページ数には限りがある どのページを主記憶上に保持し どのページをスワップ領域に退避させるかの戦略 ページ置換or メモリスケジューリング
  31. 31. ページ置換のポリシー グローバルポリシー 複数アドレス空間から追い出すページを決定 ローカルポリシー 1つのアドレス空間から追い出すページを決定
  32. 32. ページ置換アルゴリズム NRU (Not Recently Used) 最近使われたページを残し 使われていないページをスワップアウトする
  33. 33. 参照ビットと変更ビット ページごとに参照ビットと変更ビットが存在 ページが参照されるとビットが1にセット 参照ビットは定期的にリセットされる ページが変更されるとビットが1にセット 考えられる状態 参照ビットが0、変更ビットが0 参照ビットが0、変更ビットが1 参照ビットが1、変更ビットが0 参照ビットが1、変更ビットが1 上の状態ほどスワップアウトの対象になりやすい
  34. 34. その他のページ置換アルゴリズム FIFO (First-In First-Out) セカンドチャンス LRU (Least Recently Used)
  35. 35. まとめ 仮想アドレス方式により 実メモリ容量以上の領域を確保できる ページング方式により 効率的なメモリ割当てが可能に
  36. 36. 参考文献・スライド 参考書籍 スライド 野口健一郎(2002) IT Text オペレーティングシステム 坂井修一(2004) コンピュータアーキテクチャ メモリ管理、アドレス空間、ページテーブル メモリ管理(2)

×