【一道問題引發的一連串問題】
答案:C選項,爲什麼是5次?採用其他頁面置換算法呢?
目錄
1. 缺頁中斷
- 在請求分頁系統中,可以通過查詢頁表中的狀態位來確定所要訪問的頁面是否存在於內存中。每當所要訪問的頁面不在內存時,會產生一次缺頁中斷,此時操作系統會根據頁表中的外存地址在外存中找到所缺的一頁,將其調入內存;
- 缺頁中斷是由於所要訪問的頁面不存在於內存時,由硬件所產生的一種特殊的中斷;
- 缺頁本身是一種中斷。
2. 置換算法
2.1 先進先出置換算法(First In First Out,FIFO)
- 優先淘汰最早進入內存的頁面,即在內存中駐留時間最久的頁面;
【上述問題詳解】
一個進程獲得三個主存塊的使用權,若該進程訪問頁面的次序是{1 3 2 1 2 1 5 1 2 3},採用FIFO算法,缺頁數是6次。
訪問頁面 | 1 | 3 | 2 | 1 | 2 | 1 | 5 | 1 | 2 | 3 |
---|---|---|---|---|---|---|---|---|---|---|
物理塊 | 1 | 3 | 2 | 2 | 2 | 2 | 5 | 1 | 1 | 3 |
物理塊 | 1 | 3 | 3 | 3 | 3 | 2 | 5 | 5 | 1 | |
物理塊 | 1 | 1 | 1 | 1 | 3 | 2 | 2 | 5 | ||
缺頁中斷 F = 6 | Y | Y | Y | Y | Y | Y |
缺頁中斷率爲:6 / 10 * 100% = 60 %
【Belady異常】
- FIFO算法會產生當所分配的物理塊數增大而頁故障數不減反增的異常現象,故稱爲Belady異常,FIFO算法可能出現Belady異常;
- LRU和OPT算法不會出現Belady異常。
2.2 最近最久未使用置換算法(Least Recently Used,LRU)
- 利用局部性原理,根據一個作業在執行過程中過去的頁面訪問歷史來推測未來的行爲。它認爲過去一段時間裏不曾被訪問過的頁面,在最近的將來可能也不會再被訪問;
- 實質:當需要淘汰一個頁面時,總是選擇在最近一段時間內最久不用的頁面予以淘汰。
【上述問題詳解】
一個進程獲得三個主存塊的使用權,若該進程訪問頁面的次序是{1 3 2 1 2 1 5 1 2 3},採用LRU算法,缺頁數是5次。
訪問頁面 | 1 | 3 | 2 | 1 | 2 | 1 | 5 | 1 | 2 | 3 |
---|---|---|---|---|---|---|---|---|---|---|
物理塊 | 1 | 3 | 2 | 1 | 2 | 1 | 5 | 1 | 2 | 3 |
物理塊 | 1 | 3 | 2 | 1 | 2 | 1 | 5 | 1 | 2 | |
物理塊 | 1 | 3 | 3 | 3 | 2 | 2 | 5 | 1 | ||
缺頁中斷 F = 5 | Y | Y | Y | Y | Y |
- 缺頁中斷率爲:5 / 10 * 100% = 50 %
2.3 最佳置換(Optimal,OPT)
- 置換以後不再被訪問或在將來最遲纔會被訪問的頁面,缺頁中斷率最低。
- 但很難估計哪一個頁面是以後不再使用或在最長時間以後纔會用到的頁面,所以該算法是不能實現的。
【上述問題詳解】
一個進程獲得三個主存塊的使用權,若該進程訪問頁面的次序是{1 3 2 1 2 1 5 1 2 3},採用OPT算法,缺頁數是5次。
- 注意:最後不會訪問或最後才被訪問的頁面總是放在最下面的內存塊中;
- 當第一次訪問頁面5時,產生第4次缺頁中斷,根據OPT算法,淘汰頁面3,因爲它1、2、3三個頁面中,是在將來最遲纔會被頁面訪問的頁面。
- 內存塊從上到下依次存放最先訪問的頁面。
訪問頁面 | 1 | 3 | 2 | 1 | 2 | 1 | 5 | 1 | 2 | 3 |
---|---|---|---|---|---|---|---|---|---|---|
物理塊 | 1 | 3 | 2 | 1 | 2 | 1 | 5 | 1 | 2 | 3 |
物理塊 | 1 | 3 | 2 | 1 | 2 | 1 | 5 | 1 | 2 | |
物理塊 | 1 | 3 | 3 | 3 | 2 | 2 | 5 | 1 | ||
缺頁中斷 F = 5 | Y | Y | Y | Y | Y |
- 缺頁中斷率爲:5 / 10 * 100% = 50 %