-----頁面置換演算法------
1.概念:當出現缺頁異常的時候,並且記憶體中的空閒頁面也用完,
此時必須把進行外存與記憶體的乙個頁面置換。
頁面置換演算法的功能:選擇合適的頁面進行置換。
2.置換演算法追求的目標
* 盡可能減少頁面置換的次數
* 將未來不用/短時間內不使用的頁面換出。
注意:置換演算法要考慮的是整個記憶體中所有程序執行的效能-並不只是某個程序
3.頁面鎖定:記憶體中不能被置換的頁面
* 描述必須常駐記憶體的邏輯頁面
* 作業系統核心頁面
* 要求響應速度的**和資料
* 頁表中的鎖定標誌位
4.置換演算法的評價方法
記錄程序訪問記憶體頁面的軌跡,模擬置換演算法,記錄缺頁次數
5.頁面置換演算法的分類
區域性置換演算法:每個程序分配的頁面個數確定,置換只會發生在自己的所屬頁面
全域性置換演算法:置換頁面是所有可能被置換的頁面
6.區域性置換演算法--程序分配的頁面數固定
最優演算法:**未來最長時間不會使用的頁面--看的是後面的訪問情況
opt特點:缺頁最少,但是是理想情況,實際系統無法**未來的訪問序列
可以作為其他置換演算法的評價標準
先進先出:按照時間順序置換,但是這個並不能保證是和程式的訪問特性一致
其實根據的是佇列的特性--時間。置換在記憶體中駐留時間最長的
fifo實現:維護乙個鍊錶:鏈頭放時間最長,剛進來的頁面放在鏈尾
先進先出特點:實現簡單;效能較差;增加程序頁面個數,缺頁率不一定會減少
(belady現象)很少會單獨使用該演算法
最近最久未用演算法:統計過去的訪問特徵,**未來訪問情況--演算法過於複雜
opt的近似。選擇最近最久未訪問的頁面被置換
(lru):依據最近最久沒訪問的頁面在未來一段時間也不會訪問
記錄每個頁面上次訪問的時間,到現在的時間差
最大的乙個頁面被置換出來。
lru實現:1.系統維護乙個按照最近一次訪問時間順序的頁面鍊錶;
鏈頭是剛剛訪問的頁面,鏈尾巴是最近未訪問的;
訪問時候將剛訪問的頁面置於鏈頭,缺頁置換鏈尾的頁面。
2.維護乙個活動頁面棧
訪問頁面時候壓棧頂並將相同的頁面刪除
缺頁時候置換棧底的頁面
lru實現過程:開銷比較大
時鐘演算法clock:對lru近似+fifo綜合;僅對頁面訪問情況進行大致的統計
僅僅記錄頁面是否被訪問;沒訪問的頁面按照進來的先後
順序進行置換出去。
clock資料結構:在頁表項中增加訪問位;把頁面組織成環形鍊錶
指標指向最先調入的頁表
演算法實現:頁面裝入的時候:訪問位0;頁面訪問的時候,訪問位1;
缺頁時候指標從當前位置順序查詢環形鍊錶
訪問位位0,就置換該頁面,新放入頁面為1
訪問位為1;則訪問位置0;並移動到下乙個頁面直到找到
訪問位為0可以被置換的頁面。
特點:是在lru和fifo中做折中
改進的clock: 減小修改頁面的處理開銷:對於修改的頁面不進行替換
在頁表專案:定義乙個修改位;修改過1;未修改就0
改進的clock思路:在訪問頁面的時候進行相應的修改
缺頁,修改頁面標誌位,以跳過有修改的頁面
對於修改過的頁面寫回操作會被統一操作
最不常用演算法ifu:對lru近似;缺頁時候,置換的是最少次數訪問的頁面
實現:為每個頁面設定計數,缺頁時候,置換出計數小的
特點:演算法開銷大;開始頻繁使用的頁面,但是以後不使用就
難以被置換出去,通過定期對這些頁面的計數減小。、
7.區域性置換演算法的特徵
1.belady現象:分配給程序頁面數增加,可能就出現缺頁次數增加
產生的原因:fifo演算法的置換特徵與程序訪問的動態特徵矛盾
被置換出去的頁面可能程序下次還會要訪問
產生belady的演算法:fifo
2.lru,fifo,clock比較
lru演算法效能好,但是系統開銷大(動態調整頁面的順序)
fifo系統開銷小,但是會產生belady現象(不進行動態調整)
clock是它們的折中;在訪問的過程中通過標準描述動態的關係
8.全域性置換演算法
區域性置換演算法並沒有考慮到程序的訪問差異
思路:為程序分配可變數目的物理頁面
在不同階段為程序分配不同數目的物理頁面
演算法:如何確定給程序分配多少頁面
程序個數與cpu利用率存在乙個關係:前邊是正比,但是存在極限限制
引入工作集:乙個程序當前正在使用的邏輯頁面的集合。w(t,v)
w(t,v):指的是當前時間之前的時間很短,訪問頁面的集合;工作集大小可變
工作集變化規律:不同的階段工作集大小不同
常駐集:在當前時刻,程序實際駐留記憶體的頁面集合。
工作集與常駐集的關係:
工作集是程序執行過程的固有特性
常駐集是取決於系統分配給程序的物理頁面和頁面置換演算法
常駐集包含於工作集:缺頁少
工作集發在劇烈變化,缺頁多
程序的常駐集大小達到一定數目;缺頁率不會明顯下降
工作集演算法:可以理解為最優演算法在全域性置換的體現
思路:換出不在工作集中的頁面
實現:訪問鍊錶:維護視窗內的訪存頁面鍊錶
訪存時候換出不在工作集中的;更新鍊錶
缺頁時候,換入,更新鍊錶
缺頁率置換演算法:缺頁率定義:兩次缺頁時間間隔的倒數
影響缺頁率原因:頁面置換演算法
分配給程序的頁面數目
頁面大小
程式的編寫方法
缺頁率置換演算法: 訪存的時候設定標誌
缺頁的時候計算時間間隔;>t置換未被引用<=t加入工作集
抖動和負載控制
抖動:程序擁有的物理頁面過少,不能包含工作集
造成大量缺頁,頻繁置換
程序執行速度變慢
產生抖動原因:記憶體中的程序數,每個程序獲取的頁面個數
作業系統需要在併發和缺頁率之間做折中
負載控制:通過控制併發程序數來進行系統的負載控制
作業系統儲存管理
分段單元 分頁單元 邏輯位址 段基址 32位偏移量 線性位址 虛擬位址,0 4gb 實體地址 6個段暫存器 cs code段 ss stack段 ds data段 es fs gs 通用段暫存器 16位的段選擇符就存放在以上段暫存器中 線性位址 4gb 被分成以固定長度為單位的組,即頁。頁內部連續的...
作業系統 儲存管理
儲存管理 1 所謂虛擬儲存技術,即在記憶體中保留一部分程式或資料,在外存 硬碟 中放置整個位址空間的副本。程式執行過程中可以隨機訪問記憶體中的資料或程式,但需要的程式或資料不在記憶體中時,就將記憶體中的部分內容根據情況寫回外存,然後從外存調入所需程式或資料,實現作業內部的區域性對換,從而允許程式的位...
作業系統 儲存管理
儲存管理中大概涉及到了下圖所示的這些知識點。在了解儲存管理之前,我們必須要知道計算機當中有那些儲存器,這些儲存器有那些特點,他們是如何工作的!如下圖所示 除了上面這三種儲存器,還有暫存器。暫存器是 處理器內的組成部分。暫存器是有限存貯容量的高速存貯部件,它們可用來暫存指令 資料和位址。在 處理器的控...