操作系統學習(六)-- 虛擬內存(頁面置換算法)


操作系統之虛擬內存

L24 內存換入-請求調頁與內存換入

  • Swap in / Swap out

  • 讓用戶使用,使用分段,為了提高效率,引入分頁;然后鏈接分段分頁使用虛擬內存

  • 用換入,換出實現大內存

  • 把要使用的部分換入到物理內存,建立映射

  • 請求,換入(調入頁面),建立映射(頁面映射)

  • 請求調頁

  • MMC查找缺頁,就需要調頁,即缺頁中斷。

  • 訪問的內存地址沒有在內存中(沒有映射),就需要在磁盤中找到地址調入內存,從而實現虛擬內存

  • 一個實際系統的請求調頁

  • CR0,2,3等CPU的寄存器

  • 申請空閑頁面,讀磁盤,建立映射(放入頁表)

  • 修改頁表

L25 內存換出

  • Swap out

  • 選擇一頁淘汰,換出到磁盤,選擇哪一頁,就是頁面置換算法

  • FIFO頁面置換

  • MIN頁面置換

  • 最遠將使用的頁淘汰

  • LRU頁面置換least recent use

  • 最近最少使用的頁面淘汰

  • 客觀世界:局部性,稀疏性,低秩性

  • LRU置換算法實現

  • 很巧妙的利用時間戳,缺頁利用時間戳最小的值換出

  • 實際操作系統實現很困難,每執行一條指令,進行地址重定位,需要查看當前頁面的時間戳,效率很低,然后還要考慮時間戳溢出

  • LRU准確實現,用頁碼棧

  • 棧頂始終是最近訪問的頁面

  • 實際代價太多,LRU近似實現

  • 將時間計數變為是和否

  • 循環一圈,不是之前的最近最少訪問,近似成:最近沒有訪問,轉一圈如果沒有改變值,即是該值最近沒有被訪問過

  • 二次機會算法,Clock算法

  • 缺頁少,從1置為0就少

  • R置為1即頁面調入,R置為0即頁面將調出

  • 定時清除R位,最近一段時間又沒有使用,所以就清除

  • 還需要解決一個問題

  • 理解:頁面換入換出>實現虛擬內存>為了實現段頁機制>為了實現程序執行起來>最終位進程

  • 一個進程分為很多段,形成很多頁面,但是頁框可能不足夠,此時產生缺頁中斷,進行頁面調入調出

  • 當訪問內存時,頁面不存在,產生缺少中斷,然后從磁盤中調入到頁面到物理內存,此時可能葉框滿,需要根據clock算法將頁面寫入到磁盤,然后再將調入的頁面寫入到內存中

  • swap分區管理


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM