仮想記憶とメモリ管理

luagate/virtual-memory-intro仮想記憶入門23OS・Linux

上から下へ、全 23 枚そのまま並べています。

発表モードで開く

仮想記憶入門

仮想記憶とメモリ管理

足りないメモリを補う 〜見かけ上広く使う〜

1
1

目次

今日の流れ

1. メモリの復習と足りない問題

2. 仮想記憶とは

3. ページングとスワップ

4. ページフォールトと注意点

5. まとめと振り返り

2
2
仮想記憶入門 - イントロ

今日のゴール

この時間で身につけてほしいことです。

  • メモリが足りなくなる場面をイメージできる
  • 仮想記憶が「見かけ上広く使う」工夫だと分かる
  • ページングとスワップの違いを説明できる
  • ページフォールトとスラッシングが分かる
  • メモリとディスクの速度差を意識できる
10
3
仮想記憶入門 - イントロ

メモリ の復習

以前学んだメモリは、作業中のデータを置く机の上のような場所でした。

メモリ(主記憶)

CPUがいま使うデータやプログラムを一時的に置く、高速だが容量が限られた場所。電源を切ると消える。作業中の書類を広げる机の上にあたる。

以前学んだ作業用の置き場所

高速だが容量が限られる

電源を切ると消える

机の上のように作業中のものを置く

広いほどたくさん同時に作業できる

11
4
仮想記憶入門 - イントロ

メモリが足りない

アプリをたくさん開くと、限られた机の上はすぐにいっぱいになってしまいます。

  • アプリを開くほどメモリを使う
  • 机の上には限りがある
  • 全部を同時には広げきれない
  • 足りなくなると新しい作業ができない
  • かといってメモリは高価で無限には積めない
12
5
仮想記憶入門 - イントロ

仮想記憶 とは

ディスクの一部を借りて、実際より広いメモリがあるように見せる仕組みです。

仮想記憶(Virtual Memory)

実際のメモリにディスクの一部を足し、見かけ上は広いメモリがあるかのように見せる仕組み。いま使う分だけメモリに置き、当面使わない分はディスクに退避する。

ディスクを借りて広く見せる

実際より大きなメモリに見える

使う分だけメモリに置く

使わない分はディスクに退避

限られたメモリを賢く使える

13
6

仮想記憶入門 - ページング

2

第2部 ページングとスワップ

小分けにして出し入れする

20
7
仮想記憶入門 - ページング

ページング とは

メモリを小さなページに区切って管理する、仮想記憶の基本のやり方です。

ページング(Paging)

メモリとデータを「ページ」という同じ大きさの小さな塊に区切り、ページ単位で出し入れして管理する方式。本を1ページずつ机に出すように、必要なページだけ置く。

メモリを同じ大きさのページに区切る

ページ単位で出し入れする

必要なページだけメモリに置く

使わないページはディスクへ

細かく管理して無駄を減らせる

21
8
仮想記憶入門 - ページング

スワップ とは

メモリが足りないとき、当面使わないページをディスクに追い出すことです。

スワップ(Swap)

メモリが足りなくなったとき、しばらく使わないページをディスクに退避し、空いた場所に必要なページを読み込む動き。机が狭くなったら使わない書類を引き出しにしまう感覚。

使わないページをディスクへ退避

空いた場所に必要なページを読む

メモリ不足を切り抜けられる

ディスクは遅いので待ちが増える

頻発すると体感が重くなる

22
9
仮想記憶入門 - ページング

ページの出し入れの流れ

必要なページをメモリに置き、足りなければ古いページをディスクへ逃がします。

1. 必要なページを要求

CPUがあるページを使いたいと求める

2. メモリを確認

そのページがメモリにあるか調べる

3. 無ければ読み込む

ディスクからメモリへ読み込む

4. 場所を空ける

足りなければ古いページを退避する

23
10
仮想記憶入門 - ページング

メモリとディスクの速度差(イメージ)

メモリは一瞬、ディスクはずっと遅いので、スワップが増えると待ち時間が膨らみます。あくまでイメージです。

10000 相対的な所要時間80006000400020000
1相対的な所要時間
100相対的な所要時間
10000相対的な所要時間
メモリから読む
SSDから読む
ハードディスクから読む

出典: 記憶装置の速度差の傾向を示す概念図(概算)

24
11

仮想記憶入門 - 落とし穴

3

第3部 ページフォールトと落とし穴

足りないときに起きること

30
12
仮想記憶入門 - 落とし穴

ページフォールト とは

必要なページがメモリになく、ディスクから取りに行く必要が生じた状態です。

ページフォールト(Page Fault)

使いたいページがメモリに無く、ディスクから読み込む必要がある状態。読み込みの間は待ちが生じる。引き出しから書類を取り出す手間にあたる。

必要なページがメモリに無い状態

ディスクから読み込む必要がある

読み込みの間は待ちが生じる

たまになら問題は小さい

頻発すると全体が遅くなる

31
13
仮想記憶入門 - 落とし穴

スラッシング とは

出し入れに追われ、本来の仕事がほとんど進まなくなる困った状態です。

スラッシング(Thrashing)

メモリが足りず、ページの出し入ればかりに追われて、本来の処理がほとんど進まなくなる状態。書類を出してはしまうを繰り返し、仕事が止まる状況。

ページの出し入れが多発する

本来の処理がほとんど進まない

ディスクへのアクセスが増え続ける

体感が極端に重くなる

メモリ増設や負荷を減らして防ぐ

32
14
仮想記憶入門 - 落とし穴

快適なときと苦しいときの比較

メモリに余裕があるかどうかで、ページの出し入れの頻度と体感が大きく変わります。

余裕があるとき
苦しいとき

ページの出し入れ

ほとんど起きない

ひっきりなしに起きる

ディスクアクセス

少ない

非常に多い

体感の速さ

快適に動く

極端に重くなる

状態の呼び名

正常

スラッシング

33
15

仮想記憶入門 - 階層

4

第4部 記憶階層と全体像

速さと広さのバランス

40
16
仮想記憶入門 - 階層

記憶階層の復習

以前学んだ記憶階層を思い出すと、仮想記憶がメモリとディスクをつなぐ工夫だと分かります。

記憶階層(上ほど速く小さい)
CPUの近く
レジスタ・キャッシュ
最速だが極小
メモリ
作業中のデータ置き場
速いが容量に限り
ディスク
SSDやハードディスク
遅いが大容量
41
17
仮想記憶入門 - 階層

仮想記憶の全体像

メモリとディスクを組み合わせ、見かけ上広いメモリとして賢く使い分けます。

  • プログラムは広いメモリがあると思って動く
  • 実際はメモリとディスクを組み合わせている
  • いま使うページはメモリに置く
  • 使わないページはディスクに退避する
  • OSがこの出し入れを裏で管理する
42
18
仮想記憶入門 - 階層

仮想記憶のうれしさ

限られたメモリでも、たくさんの大きなプログラムを動かせるようになります。

広く使える
  • 実際より大きく見せる
  • 大きなアプリも動く
安全に分離
  • 各プログラムの領域を分ける
  • お互いに干渉しにくい
賢く配分
  • 使う分だけメモリに置く
  • 無駄を減らす
43
19
仮想記憶入門 - まとめ
クイズ

振り返りクイズ

今日の内容を確認しましょう。

ページの出し入ればかりに追われ、本来の処理がほとんど進まなくなる状態を何と呼ぶ?

A
ページング
B
スワップ
C
スラッシング
D
キャッシュヒット
50
20
仮想記憶入門 - まとめ
答え

振り返りクイズ 解答

ページの出し入ればかりに追われ、本来の処理がほとんど進まなくなる状態を何と呼ぶ?

A
ページング
B
スワップ
C
スラッシング
D
キャッシュヒット

メモリが足りず、ページの出し入れに追われて本来の処理が進まなくなる状態をスラッシングと呼びます。ページングはページ単位の管理、スワップはディスクへの退避そのものを指します。

51
21
仮想記憶入門 - まとめ

質疑・次回予告

今日のまとめと、次に学ぶテーマです。質問があればここで受け付けます。

今日のおさらい
  • 仮想記憶はディスクを借りて広く見せる
  • ページングで小分けし、スワップで退避する
  • 出し入れが多すぎるとスラッシングで重くなる
次回予告
  • デッドロックと排他制御 〜資源の取り合いを防ぐ〜
  • 複数の処理が資源を奪い合う問題を学ぶ
52
22
"

仮想記憶はディスクを借りて、メモリを見かけ上広く使う工夫。ページで小分けし、使わない分は退避する。ただし出し入れが多すぎると重くなる。速さと広さのバランスを取るのがメモリ管理です。

仮想記憶入門

53
23