日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

操作系统:第三章 内存管理2 - 详解虚拟内存,页面置换算法,页面分配策略

發布時間:2024/2/28 windows 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作系统:第三章 内存管理2 - 详解虚拟内存,页面置换算法,页面分配策略 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文已收錄至 Github(MD-Notes),若博客中有圖片打不開,可以來我的 Github 倉庫:https://github.com/HanquanHq/MD-Notes,涵蓋了互聯網大廠面試必問的知識點,講解透徹,長期更新中,歡迎一起學習探討。
面試必會系列專欄:https://blog.csdn.net/sinat_42483341/category_10300357.html
操作系統系列專欄:https://blog.csdn.net/sinat_42483341/category_10519484.html


第三章 內存管理2 - 虛擬內存

目錄

  • 第三章 內存管理2 - 虛擬內存
      • 虛擬內存的定義
      • 虛擬內存的特征
    • 虛擬內存的實現
      • 請求分頁存儲管理
        • 頁表機制
        • 缺頁中斷(內中斷)
        • 地址變換機構
        • 請求分頁中的地址變換過程
        • 頁面置換算法
          • 1、最佳置換算法 OPT
          • 2、先進先出置換算法 FIFO
          • 3、最近最久未使用算法 LRU
          • 4、時鐘置換算法 CLOCK / 最近未使用算法 NRU
      • 請求分段存儲管理
      • 請求段頁式存儲管理
    • 頁面分配策略
        • 固定分配 / 可變分配
        • 局部 / 全局置換
        • 何時調入頁面
        • 從何處調入頁面
        • 駐留集 / 工作集區別


虛擬內存的定義

基于局部性原理,在程序裝入時,將會用到的部分裝入內存,暫時不用的部分留在外存,程序就可以執行。在操作系統的管理下,在用戶看來似乎有一個 比實際內存大得多 的內存,這就是 虛擬內存。

  • 若訪問信息不在內存,由操作系統從將信息從外存調入內存。(請求調頁)

  • 若內存空間不夠,將暫時不用的信息換出到外存。(頁面置換)

虛擬內存的特征

  • 多次性:作業運行無需一次全部裝入內存,允許多次調入內存。
  • 對換性:作業運行時無需常駐內存,允許在運行過程中換入換出。
  • 虛擬性:從邏輯上擴充了內存的容量,用戶看到的內存容量遠大于實際容量。
  • 虛擬內存的實現

    請求分頁存儲管理

    頁表機制

    頁號內存塊號狀態位訪問字段修改位外存地址
    0c100x
    1b1100y
    2061z

    在基本分頁存儲管理的基礎上,增加了:

    • 狀態位:表示頁面是否已在內存中
    • 訪問字段:記錄最近被訪問過幾次 / 上次訪問的時間,供置換算法選擇換出頁面時間時參考
    • 修改位:表示頁面調入內存后是否被修改過,只有修改過的頁面才需要在置換時寫回外存
    • 外存地址:頁面在外存中存放的位置

    缺頁中斷(內中斷)

    在請求分頁系統中,若要訪問的頁面不在內存,則產生一個 缺頁中斷,由操作系統的 缺頁中斷處理程序 處理。

    缺頁的進程阻塞,放入阻塞隊列。調頁完成后喚醒,放回就緒隊列。

    • 將目標頁面調入內存,必要時換出頁面

    • 缺頁中斷屬于內中斷中的“故障”,即可能被系統修復的異常

    • 一條指令在執行過程中可能產生多次缺頁中斷,如 copy A to B

    地址變換機構

    重點關注與基本分頁不同的地方:

    • 找到頁表項時,需要檢查是否在內存中
    • 若頁面不在內存中,需要請求調頁
    • 若內存空間不夠,需要換出頁面
    • 頁面調入內存后,需要修改響應頁表項

    請求分頁中的地址變換過程

    頁面置換算法

    1、最佳置換算法 OPT

    每次選擇 最長時間不再被訪問 的頁面淘汰,保證缺頁率最低。由于無法預測未來,實際上是無法實現的。

    2、先進先出置換算法 FIFO

    每次淘汰 最早進入內存 的頁面。將頁面根據先后順序排成一個隊列,每次淘汰隊頭頁面即可。

    ① 分配 3 個內存塊時,缺頁次數 9 次

    ② 分配 4 個內存塊時,缺頁次數 10 次

    Belady 異常:當為進程分配的物理塊數增大時,缺頁次數不減反增的異?,F象。只有 FIFO 算法會產生 Belady 異常,并沒有考慮到金橙世紀運行時規律。算法性能差。

    3、最近最久未使用算法 LRU

    每次淘汰 最近最久未使用 的頁面。性能好,但是開銷大。需要硬件支持。

    4、時鐘置換算法 CLOCK / 最近未使用算法 NRU
  • 簡單的 clock 算法
  • 用 (訪問位) 表示頁面狀態。0 表示未訪問過,1 表示訪問過。

    算法規則:

    • 某頁被訪問時,訪問位置為 1
    • 第一輪:如果是 0,則將該頁換出;如果是1,則置 0 且暫不換出
    • 第二輪:一定能找到訪問位為 0 的頁面
  • 改進的 clock 算法
  • 用 (訪問位,修改位) 表示頁面狀態。0 表示未被訪問 / 未被修改過,1 表示被訪問 / 修改過。

    算法規則:

    • 第一輪:從當前位置開始掃描到 第一個 (0,0) 的幀用于替換
      • 最近沒訪問,且沒修改的頁面
    • 第二輪:第一輪掃描失敗則重新掃描,找 第一個 (0,1) 的幀用于替換,同時將 掃描過的訪問位改為 0
      • 最近沒訪問,但修改過的頁面
    • 第三輪:第二輪掃描失敗則重新掃描,找 第一個 (0,0) 的幀用于替換
      • 最近訪問過,但修改過的頁面
    • 第四輪:第三輪掃描失敗則重新掃描,找 第一個 (0,1) 的幀用于替換
      • 最近訪問過,且修改過的頁面

    :由于第二輪已將所有幀的訪問位置 0,因此經過第三、四輪掃描一定會有幀被選中。

    請求分段存儲管理

    暫無

    請求段頁式存儲管理

    暫無

    頁面分配策略

    固定分配 / 可變分配

    駐留集,指請求分頁存儲管理中給進程分配的物理塊的集合。根據 駐留集大小是否可變,分為:

    • 固定分配:駐留集大小不變。操作系統為每個進程分配一組固定數目的物理塊
    • 可變分配:先為每個進程分配一定數目的物理塊,在進程運行期間,可根據情況做適當的增加或減少。

    局部 / 全局置換

    根據 頁面置換時的置換范圍,分為:

    • 局部置換:發生缺頁時只能選進程自己的物理塊進行置換。
    • 全局置換:可以將空閑物理塊分配給缺頁進程,也可將別的進程的物理塊置換到外存,再分配給缺頁進程。

    何時調入頁面

    • 預調頁策略:(運行前調入)略主要用于進程的首次調入,由程序員指出應該先調入哪些部分。
    • 請求調頁策略:(進程運行期間使用)發現缺頁時,才將所缺頁面調入內存。

    從何處調入頁面

  • 對換區空間足夠

    頁面的調入、調出都在內存與對換區之間進行,這樣可以保證頁面的調入、調出速度很快。在進程運行前,需將進程相關的數據從文件區復制到對換區。

  • 對換區空間不足

    不會被修改的數據,直接從文件區調入,換出時不寫回。

    可能被修改的部分,換出時寫回磁盤對換區,需要時再從對換區調入。

  • UNIX 方式:運行前,進程數據全部放在文件區。使用過的頁面換出到對換區,需要時從對換區調入。

  • 駐留集 / 工作集區別

    • 駐留集:指請求分頁存儲管理中給進程分配的內存塊的集合。
    • 工作集:指在某段時間間隔里,進程實際訪問頁面的集合。

    操作系統會根據“窗口尺寸”來算出工作集。例:

    某進程的頁面訪問序列如下,窗口尺寸為4,各時刻的工作集為?

    駐留集大小不能小于工作集大小,否則進程運行過程中將頻繁缺頁,發生抖動現象。

    總結

    以上是生活随笔為你收集整理的操作系统:第三章 内存管理2 - 详解虚拟内存,页面置换算法,页面分配策略的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。