簡體   English   中英

分頁器如何猜測在需求分頁中將哪個頁面帶入內存?

[英]How pager guesses which page to bring it into the memory in demand paging?

當要交換一個進程時,尋呼機在再次交換該進程之前會猜測將使用哪些頁面。 因此,傳呼機將僅交換所需的頁面。 但是,傳呼機如何預先猜測這些特定頁面是必需的?

沒想到。 如果存在需求分頁,則意味着:如果需要,它將進入內存(==進程要讀取它)。

盡管可以使用某種啟發式方法在需求之前創建它,但實際上不會發生,因為這種類型的內存也可以有更好的用法:它可以用於緩存最后一個讀/寫磁盤塊。

您還使用了一種術語:“交換了流程”。 在現代操作系統中,整個進程不會被交換進/出,而只是它們的頁面。 在較早的時候,發生了整個進程都被調入/調出的情況,因為分頁當時無法處理。

我最近有機會為小型實時OS實現需求分頁管理器(DPM)。 我無法說說大型OS的功能,但是在我工作過的RTOS中,它沒有進行任何預測/猜測。 它所做的唯一“猜測”是試圖弄清楚應該退出哪個頁面以便為新頁面騰出空間。

我需要一個通用的DPM-在任何情況下都可以使用。 我采取了純粹的被動方式; 也就是說,頁面會響應某些要求其存在的事件而被分頁(例如頁面錯誤)。 我的DPM並不主動采用這種方法(預先猜測需要哪些頁面)。 我這樣做是為了避免產生以下罰款/費用:

  1. 是時候開發更復雜的代碼了。
  2. 執行預測算法的時間。
  3. 預測未命中的罰款(加載數據,保存數據和預測頁面)

此外,前攝性方法仍將僅需要反應性成分(及其成本)來處理預測遺漏。 采取被動方法更具成本效益。

在為進程分配CPU之前,Pager不會猜測任何內容。 一旦進程進入運行狀態,它的某些頁面將被加載到主內存中,並且在該需求分頁出現后,頁面將根據過程的需求換出/切入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM