- 1、本文档共37页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MEM_COMMIT 实际的配置记忆体MEM_RESERVE
Using Virtual Memory in your application Introduce to Windows Memory Management Windows 提供了三種記憶體管理機制 Virtual Memory 專門處理大規模的物件陣列與結構陣列機制 Memory-Mapped File 大規模資料串流(檔案) , 也可以讓單一機器共享資料的一種方式 Heap 處理大量小資料的機制 Virtual Memory 的功能 在位址空間中保留一個區域、從分頁檔中為該區域安排實際儲存體、並為該實際儲存體設定保護屬性 Win32 記憶體管理階層圖 Reserving a Region in an Address Space 下列的情況下, VirtualAlloc ? NULL (失敗) 你指定的位址沒有足夠的空間 你指定的位址不在 user-mode partition 內 使用者指定 Reserving 位址 我要如何知道記憶體的配置情況? 你可以使用 VirtualQuery 幫你查閱 直接來看範例 使用者 COMMIT 位址 若你想直接指定起始位址時, 你必須要先 Reserving , 再 COMMIT 有關於起始位址的討論 如同前面提到, VirtualAlloc 傳回來的位址 必須遵循 granularity boundary (64KB) 條件 Reserve 一塊記憶體的策略 如果你希望先保留記憶體, 很久之後才會使用. 那麼你應該把它放在越高的位址越好 Protected 屬性 你可以指定 PAGE_NOACCESS, PAGE_READWRITE, PAGE_READONLY, PAGE_ EXECUTE, PAGE_EXECUTE_READ, PAGE_EXECUTE_READWRITE Committing一塊實體記憶體給 Reserve 的區間 你必須要 Commit 你的區塊,才能進行存取 系統會從 page file 中安排實際的記憶體給你 Reserve 的區塊 以 page 為單位 (4 KB) 使用範例 考慮另一種情況 若你已經從5,242,880的地方開始 Reserve 512 kB 的區塊, 而你希望 commit 的位置是 5,242,880 + 2k 開始的一塊 大小為 6KB的記憶體 安排 COMMIT 的時機 考慮下面程式 使用 Virtual Memory 的優勢 Reserving 一塊大區域, 但不需要為這個區域安排實際儲存體 當使用者第一次需要輸入資料時, 只要 COMMIT 指定的那個 Cell 即可 如何知道我要 Commit 哪個記憶體區塊? 釋放記憶體 你可以在執行過程中, 更改 protected 屬性 修改屬性的簡單範例 Memory Reset 的功能 程式基本上, 必須載入 RAM 才能執行. Page fault: 當程式存取的 page 不在 RAM 中時, 系統必須從 page file 中將資料所在的page 載到RAM中. 但問題是 RAM 的空間不足 系統必須選一個在 RAM 中的犧牲者(page),置換到 page file 中. 如果該 Page 沒有寫資料 ? 那麼直接丟棄 如果有資料更動 ? 必須把該項 page 寫到 page file 中保存. 使用時機 當你的記憶體只是想要暫存資料 當使用完後, 資料就不重要了 並沒有要 Free 掉記憶體, 因為下次可能還要用到 注意事項: Reset 是以 page 為單位 附錄 Global 與 Local functions 專門用來 porting 16-bit 的程式,主要是為了向前相容, 你應該使用 heap functions 代替 Windows 並沒有提供 global 或 local heap GlobalAlloc = LocalAlloc near 或 far pointer 的情況 在 16-bit segmented memory model 提供 near/ far pointers 32- bit virtual memory model 一律使用 32-bit 位址 GlobalAlloc 與 LocalAlloc 一律傳回 32-bit virtual address GlobalAlloc / LocalAlloc 配置的空間 private, committed pages with read/write access Copy-On-Write Windows支援一個機制, 讓兩個以上的 processes 共享同一個記憶體區
您可能关注的文档
最近下载
- 人事任命书红头文件模板-人力红头文件.doc VIP
- 森林植物检疫隔离试种苗圃建设项目初步设计.docx VIP
- 《13464电脑动画》自考复习必备题库(含答案).docx VIP
- 2024年浙江省高中化学奥林匹克竞赛模拟试卷(含答案与解析)_3084.pdf VIP
- 2025天津春季高考英语试题(含答案) .pdf VIP
- Measuring customer-based brand equity外文翻译.pdf VIP
- 《基于ICC的色彩管理在印刷流程中的实践》.pdf
- 眼科日间手术宣教.pptx
- 3.2.4植物在自然界中的作用说课稿2024-2025学年人教版生物七年级下册.docx
- 山西省2023-2024学年高一下学期期中调研测试政治试卷(含答案).docx VIP
文档评论(0)