0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Belady's anomalyの気持ち(FIFO)

Posted at

はじめに

Belady's anomaly とは 「割り当て主記憶容量を増やしたとき、ページフォールト回数が多くなる」 ことをいいます。
直観的には、割り当て主記憶容量を増やせば、ページフォールト回数は少なくなりそうです。ただ、特定の場合には belady's anomaly が発生するようです。
この記事ではFIFOの場合を例に Belady's anomaly の気持ちを見ていきます。

Belady's anomaly の気持ち

belady's anomaly の具体例として、枠数を $ 小=5, 大=6 $、参照列を、1,2,3,4,5,6,1,2,7,3,4,5, 1,2,3,4,5,6,7, 1,2,3,4,5,6,7, … (以下1,2,3,4,5,6,7 の繰り返し) とすると、繰り返しごとに枠数大の方がページフォールト回数が多くなります。 参照列は、準備部分である1,2,3,4,5,6,1,2,7,3,4,5と繰り返し部分である1,2,3,4,5,6,7に分解することができます。準備部分でページ枠の順番を調整するのが鍵になります。 以下、実際に振る舞いを見ていきましょう。

準備部分

step ref 小ページ枠 小フォールト 小計 大ページ枠 大フォールト 大計
1 1 [1] True 1 [1] True 1
2 2 [1, 2] True 2 [1, 2] True 2
3 3 [1, 2, 3] True 3 [1, 2, 3] True 3
4 4 [1, 2, 3, 4] True 4 [1, 2, 3, 4] True 4
5 5 [1, 2, 3, 4, 5] True 5 [1, 2, 3, 4, 5] True 5
6 6 [2, 3, 4, 5, 6] True 6 [1, 2, 3, 4, 5, 6] True 6
7 1 [3, 4, 5, 6, 1] True 7 [1, 2, 3, 4, 5, 6] False 6
8 2 [4, 5, 6, 1, 2] True 8 [1, 2, 3, 4, 5, 6] False 6
9 7 [5, 6, 1, 2, 7] True 9 [2, 3, 4, 5, 6, 7] True 7
10 3 [6, 1, 2, 7, 3] True 10 [2, 3, 4, 5, 6, 7] False 7
11 4 [1, 2, 7, 3, 4] True 11 [2, 3, 4, 5, 6, 7] False 7
12 5 [2, 7, 3, 4, 5] True 12 [2, 3, 4, 5, 6, 7] False 7

準備部分では小の方がフォールト回数が多いです。小と大で順番が変わっていることが重要です。大は1,2,3,4,5,6,7の順が保たれているので、これからのループは最も不利(必ずフォールト)になります。

1ループ目

step ref 小ページ枠 小フォールト 小計 大ページ枠 大フォールト 大計
13 1 [7, 3, 4, 5, 1] True 1 [3, 4, 5, 6, 7, 1] True 1
14 2 [3, 4, 5, 1, 2] True 2 [4, 5, 6, 7, 1, 2] True 2
15 3 [3, 4, 5, 1, 2] False 2 [5, 6, 7, 1, 2, 3] True 3
16 4 [3, 4, 5, 1, 2] False 2 [6, 7, 1, 2, 3, 4] True 4
17 5 [3, 4, 5, 1, 2] False 2 [7, 1, 2, 3, 4, 5] True 5
18 6 [4, 5, 1, 2, 6] True 3 [1, 2, 3, 4, 5, 6] True 6
19 7 [5, 1, 2, 6, 7] True 4 [2, 3, 4, 5, 6, 7] True 7

大は毎回フォールトします。小は順がくずれている分、フォールトをしなくてよいタイミングがあり、そのおかげで順の崩れも保たれます。

2ループ目

step ref 小ページ枠 小フォールト 小計 大ページ枠 大フォールト 大計
20 1 [5, 1, 2, 6, 7] False 0 [3, 4, 5, 6, 7, 1] True 1
21 2 [5, 1, 2, 6, 7] False 0 [4, 5, 6, 7, 1, 2] True 2
22 3 [1, 2, 6, 7, 3] True 1 [5, 6, 7, 1, 2, 3] True 3
23 4 [2, 6, 7, 3, 4] True 2 [6, 7, 1, 2, 3, 4] True 4
24 5 [6, 7, 3, 4, 5] True 3 [7, 1, 2, 3, 4, 5] True 5
25 6 [6, 7, 3, 4, 5] False 3 [1, 2, 3, 4, 5, 6] True 6
26 7 [6, 7, 3, 4, 5] False 3 [2, 3, 4, 5, 6, 7] True 7

大は1ループ目と同様です。小は1ループ目とページ枠の内容は異なりますが、同様に順の崩れが保たれています。

3ループ目

step ref 小ページ枠 小フォールト 小計 大ページ枠 大フォールト 大計
27 1 [7, 3, 4, 5, 1] True 1 [3, 4, 5, 6, 7, 1] True 1
28 2 [3, 4, 5, 1, 2] True 2 [4, 5, 6, 7, 1, 2] True 2
29 3 [3, 4, 5, 1, 2] False 2 [5, 6, 7, 1, 2, 3] True 3
30 4 [3, 4, 5, 1, 2] False 2 [6, 7, 1, 2, 3, 4] True 4
31 5 [3, 4, 5, 1, 2] False 2 [7, 1, 2, 3, 4, 5] True 5
32 6 [4, 5, 1, 2, 6] True 3 [1, 2, 3, 4, 5, 6] True 6
33 7 [5, 1, 2, 6, 7] True 4 [2, 3, 4, 5, 6, 7] True 7

3ループ目は1ループ目と同じになっています。
よって、以下ループを繰り返すと常に大の方が多くフォールトします。

おわりに

「割り当て主記憶容量を増やしたとき、ページフォールト回数が多くなる」は直観に反することであり、最初は驚きましたが、具体例を見ることで、なるほどなと思いました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?