虛擬記憶體.ppt

  1. 1、本文档共51页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 利用堆疊來記錄最近曾被參考的頁參考 LRU近似演算法 參考位元(reference bit) 每個頁會有一個位元, 起始值為0. 當頁被參考到時頁, 位元會設定為1. 取代位元為0的頁(假使有存在). 問題就是我們卻不知道過去發生參考的順序. 第二次機會 需要參考位元. 經由時間置換. 假使被取代的頁(以時間順序)有參考位元為1. 然後: 將參考位元設定為 0. 將頁留在記憶體中. 取代下一頁 (以時間順序), 按照同樣的規定操作. 第二次機會(時間)頁取代演算法 計數演算法 保持每一個頁已經被參考次數. LFU演算法: 取代有最小值的頁. MFU演算法:基於擁有最小計數值的頁有可能剛剛才被讀入而且馬上就要被用到的觀點下. 框架的配置 每個行程需要的最小頁數目. 範例: IBM 370 – 需要6 頁來處理SS MOVE指令: 指令是6位元組, 參考範圍可能需要2頁. 需要2頁來處理來自其它的參考. 需要2頁來處理參考到其他的. 兩種主要的配置機制. 固定配置 優先權配置 固定配置 相同配置 – e.g., 假使有100 框架與5個行程, 每個行程有20頁. 比例配置 – 有行程大小來配置. 優先權的配置 不考量大小而是用優先權來使用比例配置機制. 假使行程Pi 產生一個頁失誤, 為頁取代來選擇框架中的一個. 為頁取代從擁有最低優先權號碼的行程中選擇一個框架. 全域與區域取代 全域取代 – 行程從所有的框架的集合中來取代; 一個行程可以從另一個行程中取得框架. 區域取代 – 每一個行程只從自己所配置到的框架集合中取得框架. Thrashing 假使一個行程沒有足夠的頁, 頁失誤率非常高. 將會造成: 低CPU使用率. 作業系統認為他需要增加多程式化的程度. 另外一個行程加入到系統. Thrashing ? 一個行程大部分的時間都在忙著把置換頁進入或者是頁換出(程式真正被CPU執行的時間很少). Thrashing 為甚麼頁機制可以成功? 區域性模型(Locality model) 行程會從一個區域到另一個區域移動. 區域性可以重複. 為甚麼thrashing會發生? ? size of locality total memory size 記憶體參考的區域性-參考模式 工作集合模型 ? ? 工作集合視窗 ? 一個固定的頁參考數目 Example: 10,000 instruction WSSi (行程Pi的工作集合) = 在最多最近參考過的頁總數 ? (會隨著時間變動) 假使? 太小將無法掌握整個區域性. 假使? 太大將可包含幾個區域性. 假使? = ? ? 將包含所有程式. D = ? WSSi ? 所有需求的框架 假使D m ? Thrashing 解決方案:假使D m, 就暫停某一個行程. 工作集合模型 追蹤工作集合演算法 可以利用區間計時器與一個參考位元來求近似效果 範例: ? = 10,000個參考 在每5000個參考後就產生插斷. 為每一頁保持2個參考位元在記憶體內. 每次計時插斷發生, 複製與設定所有參考位元值為0. 假使記憶體中的一個位元為1 ? 在工作集合中的頁. 為甚麼這樣的方式不一定完全正確? 改善方式 = 10個位元而且每1000個時間單位產生插斷. 頁失誤頻率機制 建立 可接受(“acceptable”)頁失誤頻率. 假使實際的頻率太小, 行程可減少框架數目. 假使實際的頻率太大, 行程要增加框架. 其他考量 預先載入頁,Prepaging 減少行程初始啟動時可能發生頁失誤的次數 預先載入可能要被參考到的頁. 但是被預先載入的頁卻沒有用到, 將會浪費I/O 傳輸時間及記憶體空間. 頁大小的選擇 碎片(fragmentation) 表格大小 I/O負擔 區域性 其他考量 (Cont.) TLB Reach – 可以從TLB所獲致的記憶體存取容量. TLB Reach = (TLB Size) X (Page Size) 理想來說, 每個行程的工作集合存在TLB.? 否則將會有高頁失誤. Increasing the Size of the Page Increase the Page Size. 將導致碎片的增加,因為不是所有的行程需要大空間的頁. Provide Multiple Page Sizes. 這樣允許需要大空間頁的應用程式可以在不會增加碎片的機會下獲致頁. 其他考量 (Cont.) 程式結構 int A[][] = new int[1024][1024]; 每一列存放在一個頁內 Program 1

文档评论(0)

企管文库 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档