2007年5月15日 星期二

Mid-term

頁替換演算法


假設說,因為最近忙於寫報告,需要用到一些參考資料,所以要到圖書館去借書
這時候問題來了,我要參考的書籍有10本,但是圖書館限制說學生總共只能借4本書,而且借書、還書每一次只能1本
所以有6本書我"暫時"沒辦法借到,等到日後要用再來借,這時候我會希望說想出一個辦法,能夠跑最少次圖書館(因為圖書館很遠),而把我要參考的書都借到 手,完成我的報告。根據這個作為出發點,可以想出幾個方法:

例如我需要用到的書單編號是(分頁要求的順序):1、2、3、4、2、1、5、6、7、5、4、3

不管怎麼做,都有一個基本原則:先察看自己身上有沒有該參考書,沒有的話代表說要跑圖書館去借了(類似置換的動作)。

FIFO 先進先出:最簡單的方法

我的借書單(分頁表),一開始雙手空空,順序是 1、2、3、4、2、1567、5、 4、3

位置 1 2 3 4 1 1 2 3 4 4 4 1
順序 1 2 3 4 2 1 5 6 7 5 4 3
格子(Frame)1 1 1 1 1 1 1 5 5 5 5 5 5
格子(Frame)2
2 2 2 2 2 2 6 6 6 6 6
格子(Frame)3

3 3 3 3 3 3 7 7 7 7
格子(Frame)4


4 4 4 4 4 4 4 4 3
總計 1 2 3 4 4 4 5 6 7 7 7 8
註解









也就是說,我要跑8次圖書館才能借齊所要用到書

以上廢話,可略
======================================================================================================================
Second Chance + FIFO Ver1 : 最簡單的版本

原則:

1.當分頁被載入的時候,參考位元設成1, 表示多了一次機會,如果需求的分頁在分頁表中,參考位元也設為1
2.當要存取的分頁不在分頁表中,從 頭到尾掃瞄參考位元遇 到1 設為0, 遇到0則替換調這一頁, 掃完了再從頭到尾掃一次
3.替換上來的那一頁,參考位元設為1

例子:1、2、3、4、2、1、5、6、2、1、2、3、7、6、3、2、1、2、3、6


1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 2 1 2 3 6


1 1 1 1 1 1 5 5 2 2 2 3 3 3 3 3 1 1 1 6

2 2 2 2 2 2 6 6 6 6 6 6 6 6 6 6 6 3 3


3 3 3 3 3 3 3 1 1 1 1 1 1 2 2 2 2 2



4 4 4 4 4 4 4 4 4 7 7 7 7 7 7 7 7



1 1 1 1 1 1(0) 1 0 1 0 0 1 0 0 1 0 1 1 0 0

1 1 1 1 1(0) 0 1 1 0 1 1 0 1 1 0 0 0 1 0


1 1 1 1(0) 0 0 0 1 1 1 0 0 0 1 1 1 1 1



1 1 1(0) 0 0 0 0 0 0 1 1 1 1 1 1 1 0

1 2 3 4 4 4 5 6 7 8 8 9 10 10 10 11 12 12 13 14






A B C











A.當要載入第5頁的時候,第5頁不在分頁表中,因為前面一欄的參考位元是1111(藍色部分),掃瞄過一次之後就變成0000(刮號的部分),
再重新掃瞄發現第一個0,就把它替換出去,接著把第5頁換進來,參考位元設為1,所以變成1000(紫色部分)

B.當要載入第6頁,第6頁不在分頁表中,前面的參考位元是1000(紫色部分),掃瞄過一次,把第一個參考位元設成0,發現第二個參考位元為0,把它置 換出去,其他的參考位元不動,把第6頁換進來,參考位元設為1,所以變成0100(黃色部分)

C.當要載入第2頁,第2頁不在分頁表中,前面的參考位元是0100(黃色部分),掃瞄過一次,第一個參考位元是0,把它置換出去,
其他的參考位元不動,把第2頁換進來,參考位元設為1,所以變成1100(橙色部分)

其他以此類推,所以總共會有14次分頁錯誤


Second Chance + FIFO Ver2 :多了指標,13次分頁錯誤

原則上,比第一個版本多了一個指標,記錄上一次被替換掉的參考位元的位置
如果要求的分頁不在分頁表中,並不是從頭掃到尾,而是從指標所指定

原則:

1.當分頁被載入的時候,參考位元設成1, 表示多了一次機會
如果需求的分頁在分頁表中參考位元也設為1

2.當要存取的分頁不在分頁表中,從指標所指定的位置開始掃瞄參考位元遇 到1 設為0, 遇到0則替換調這一頁, 掃完了再從頭到尾掃一次

3.替換上來的那一頁,參考位元設為1


1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 2 1 2 3 6


1 1 1 1 1 1 5 5 5 5 5 3 3 3 3 3 1 1 1 1

2 2 2 2 2 2 6 6 6 6 6 7 7 7 7 7 7 3 3


3 3 3 3 3 3 2 2 2 2 2 6 6 6 6 6 6 6



4 4 4 4 4 4 1 1 1 1 1 1 2 2 2 2 2

(1)
2 3 4 1 1 1 2 3 4 1 1 2 3 4 4 1 2 2 3 3



1 1 1 1 1 1(0) 1 1 1 1 1 1 1 1 1 1 1 1 1 1

1 1 1 1 1(0) 0 1 1 1 1 0 1 1 1 1 0 0 1 1


1 1 1 1(0) 0 0 1 1 1 0 0 1 1 1 0 0 0 1



1 1 1(0) 0 0 0 1 1 0 0 0 0 1 0 1 1 1

1 2 3 4 4 4 5 6 7 8 8 9 10 10 10 11 12 12 13 13






















指標指的是下一個要被替換的分頁位置,初始值為1


Second Chance + LRU 改良版:這個有點複雜,不要太深入研究,錯誤率也不是最少的XD



1 2 3 4 2 1 5 6 2 1 2 3 7 6 3 2 1 2 3 6


1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 3 3 3 3 3

2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1


3 3 3 3 5 5 5 5 5 5 5 6 6 6 6 6 6 6



4 4 4 4 6 6 6 6 6 7 7 7 7 7 2 2 2



0 1 2 3 4 0 1 2 3 4 5 0 1 2 0 1 2 3 4 5

0 1 2 0 1 2 3 0 1 2 3 4 5 6 0 0 1 2 3


0 1 2 3 0 1 2 3 4 5 6 0 1 2 3 4 5 6



0 1 2 3 0 1 2 3 4 0 1 2 3 4 0 1 2



1 1 1 1 1 1(0) 0 0 0 0 0 1 1 1 1 1 0 0 0 0

1 1 1 1 1(0) 0 0 0 0 0 0 0 0 0 0 1 1 1 1


1 1 1 1(0) 1 1 1 1 1 1 0 1 1 1 0 0 0 0



1 1 1(0) 0 1 0 0 0 0 1 1 1 1 0 1 1 1

1 2 3 4 4 4 5 6 6 6 6 7 8 9 9 9 10 11 11 11





















沒有留言:

依頻率排序