操作系统原理:全局页面置换算法、工作集页置换、常驻集页置换、抖动问题
? ? ? ? ? 程序在運行過程中具有階段性,可能剛開始的時候需要訪問的內存很多,之后訪問的內存可能會很少。如果操作系統給每個程序分配固定的物理頁那么就顯得不靈活,有沒有辦法動態地給程序分配頁幀呢,在需要訪問很多內存的時候多分配點頁,不需要訪問過多內存的時候少分配點頁?
? ? ? ? ?工作集模型:工作程序需要有局部性原理(鄰近的代碼變量分配在相鄰的空間,一條指令的一次執行和下次執行都在很短的時間)。工作集是一個進程當前正在使用的邏輯頁面集合。可以用 W(t,Δ) 二元式表示t時刻Δ窗口中的頁面組成的集合,?,其中t 表示當前執行時刻,而Δ表示工作集窗口,是一個定長的頁面訪問的時間窗口 。 |W(t,Δ)| 表示工作集大小,頁面數量。
? ? ? ? ?
? ? ? ? ?常駐集概念:常駐集是工作集的一種,指在當前某個時刻,進程實際駐留在內存當中的頁面集合。工作集是需要訪問在內存的頁面集合。由于在某個時刻需要訪問的內存數量有限,所以整個執行過程中常駐集是有最大值的,當操作系統給程序的常駐集太大也可能造成空間上的浪費。
?
一、工作集的頁置換算法
? ? ? ?工作集的頁置換算法并不是只有發生缺頁中斷時才把頁換出到外存。隨著程序在執行,工作集的窗口會跟著挪動,如果頁不在工作集窗口中就會把頁換出
?
這種置換算法雖然增加了缺頁中斷,但是卻可以有效地保留最近訪問的頁,提前換出內存中的物理頁,給其他應用程序提供更多的內存空間,達到動態分配內存空間的目的。與此同時,由于大部分寫硬盤操作是提前完成的,所以當發生缺頁中斷時,大多數情況只需要寫內存操作就行。
?
二、缺頁率頁面置換算法 (PFF)
? ? ? ?上述算法的窗口大小是固定的,而在PFF算法中,窗口大小是可以變化的。在每個進程運行開始時,先根據程序大小分配一定數目的物理頁面,在運行過程中再根據缺頁率來調整窗口大小。缺頁率過低說明需要的物理頁面足夠,需要減小工作集,過低則表示分配的物理頁不夠需要增大工作集,來進行動態地調整工作集窗口大小。
? ? ? 缺頁率 = 缺頁次數 /內存訪問次數? ? , 也是 缺頁次數關于程序執行時間的導數。
? ? ? 在下例中,Window size 代表缺頁中斷的時間間隔。
? ? ??
? ? 此方法相比工作集算法更靈活,但是實現起來會復雜些。
?
三、抖動問題
? ? ?如果操作系統分配給進程的物理頁面太少,則不能包含整個工作集,隨著駐留內存的進程數目增加,分配給進程的頁面數減少,容易發生頻繁的缺頁中斷,這個現象稱之為“抖動”,所以操作系統需要選擇一個適當的進程數目和進程需要的幀數,以便在并發水平和缺頁率中保持一個平衡。 例如當計算機剛開機時,CPU的利用率很高,隨著操作系統運行的時間越來越久,進程的數量越來越多,如果缺頁率高CPU可能在頻繁地做頁的換入換出操作,使CPU的系統利用率低,造成在運行的程序效率低。 如何量化都動問題呢?在性能測試中,需要計算 平均的缺頁時間,即大概多久會平均產生一次缺頁 ,需要計算出缺頁時換入換出時間。 當?平均的缺頁時間 接近??缺頁時換入換出時間 時,CPU能夠高效且高并發的為系統所利用。
總結
以上是生活随笔為你收集整理的操作系统原理:全局页面置换算法、工作集页置换、常驻集页置换、抖动问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 操作系统原理:页置换算法,FIFO,LR
- 下一篇: Linux C : Makefile 的