第11部分虚拟记忆体技术和虚拟定址.pptVIP

第11部分虚拟记忆体技术和虚拟定址.ppt

  1. 1、本文档共58页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第 11 章 虛擬記憶體技術和虛擬定址 虛擬記憶體 虛擬記憶體隱藏實體記憶體的底層細節,提供另外一種更方便規劃的記憶環境。 虛擬記憶體建造虛擬的空間圖像 虛擬記憶體涵蓋各種不同的技術和方法。 虛擬範例:位元組定址 還記得:在字組定址的實體記憶體上,把字組定址轉譯成位元組定址,正是虛擬位址的映射觀念。 智慧型控制器會負責把字組定址轉譯成位元組定址。 虛擬術語 MMU(記憶體管理單元) 記憶體的智慧型控制器 MMU接受處理器所送出的虛擬位址,再轉換成實體位址(轉換細節通常隱藏在MMU背後)。 虛擬術語(Cont.) 虛擬位址 虛擬位址非實體(或稱真實)位址 目前大部分的處理器使用的位址是虛擬位址,而非實體位址。 虛擬空間 虛擬空間意指所有虛擬位址的集合 可以大於或小於實體空間 多重實體記憶介面 許多電腦可以把多個實體記憶體整合到單一虛擬空間。 MMU可以延伸出更複雜的記憶體組織 比如:整合SRAM和DRAM兩種不同的實體記憶體: (SRAM一個字組四個位元組) (DRAM一個字組八個位元組) 可以使用相同的指令,來存取位元組。 涵蓋雙實體記憶介面的虛擬系統 虛擬定址 如何提供虛擬空間? 比如: 記憶體1的位址 0到 999 記憶體2的位址1000到1999 只要根據位址編號,MMU就可以知道目標是哪一個實體記憶體,和所使用的存取策略。 雙實體記憶介面的虛擬位址 位址映射 位址映射由MMU負責,又稱為位址轉譯。 如同之前範例: 記憶體1的虛擬位址與實體位址相同,因此直接轉送這些虛擬位址給記憶體1; 記憶體2的虛擬位址從1000開始,因此MMU必須在轉送給記憶體2之前,就先把虛擬位址轉譯到真實位址。 執行位址轉譯的執行步驟 避開計算 數學計算成本昂貴 盡量避開數學計算 解決的方法應該是:謹慎地使用2的冪次位元,以最簡單的虛擬位址分割方式,完成必要的位址轉譯。 2的冪次範例 1000個位元組不是2的冪次方 實體記憶體應該改成210=1024位元組 最好改成 位址 0到1023給記憶體1 位址1024到2047給記憶體2 二進位位址範例 以十進位的眼光來看,這些數值似乎不怎麼相似!改以二進位元排列,發現低階位元排列幾乎相同,唯一不同的只有最高階位元。 重點 選擇2的冪次虛擬位址可以避開麻煩的算術計算,只要使用最簡單的位元分割,就可以讓MMU選擇到正確的實體記憶體,並執行必要的位址轉譯。 非連續位址 連續位址 虛擬位址從零開始到最大位址,連續不斷。 每一個虛擬位址總是對應一個等效的實體位置。 非連續位址 實體記憶體都會有其映射的虛擬空間 使用者有權選擇記憶體的數量,或省略某些實體記憶體,這表示部分的虛擬位址將無法使用。 組合實體位址可能會出現非連續位址 造成虛擬空間出現漏洞 非連續位址圖 一旦處理器存取到漏洞,將出現錯誤 程式設計師受到的影響 虛擬空間可能是連續位址,每個位址會映射到一個實體記憶體的位置;另外,虛擬空間也可能非連續,造成虛擬空間出現一個或多個空洞,一旦處理器嘗試讀寫這些空洞,將因為找不到等效的實體記憶體,而出現錯誤。 虛擬記憶體的動機 硬體整合同質性 程式規劃便利性 支援多重程式 程式和資料保護 多重虛擬空間和多重程式執行 目標:多重程式執行 早期因為記憶體資源的衝突問題,多重程式執行是不可行的。 因此,必須有能力防止程式之間彼此的衝突與干擾。 技巧:提供各個程式擁有自己的虛擬位址空間,各自獨力互不干擾。 一個實體四個虛擬空間範例 多階層虛擬化 MMU可以把多重虛擬位址轉譯到單一實體記憶體。 MMU硬體還可以執行其它不同的虛擬化映射,比如: 映射到多個實體記憶體 把位元組位址轉譯到字組位址。 動態虛擬空間的建立技術 基底-界線暫存器 區段 分頁請求 基底-界限暫存器 使用兩個暫存器:基底暫存器和界限暫存器,來界定出虛擬空間的位置。 在致能MMU之前,必須先載入數值到這兩個暫存器: 基底暫存器儲存實體記憶體的位址,剛好指向虛擬空間的開頭。 界限暫存器則儲存整個虛擬空間的大小。 使用基底-界限暫存器的虛擬機制 界限的保護 為什麼要多一個界限暫存器呢? 答案就是:保護! 界限暫存器用來保證:程式不會超過其管轄範圍。 為了實現這種保護功能,MMU必須檢查每一個記憶體參考,一旦存取的記憶體位址跳出M,就會發生錯誤。 保護觀念 支援多重程式執行的虛擬記憶體必須能夠提供保護,防止程式讀取或改變其它程式所座落的記憶體內容。 區段 基底-界限的虛擬技術稱為粗粒映射。 另一種稱為細粒映射。 典型來看,電腦結構師發現: 應用程式內部包含某些程序和呼叫流程,如果整個載入到記憶體時,會佔據許多空間。 大部分的應用程式在某個時間點,可能只有一個程序正在執行,顯然載入整個程式,有

您可能关注的文档

文档评论(0)

118books + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档