windows 地址空間分配

來源:互聯網
上載者:User

標籤:window   儲存空間   相關   x86   記憶體   exe   完成   資料   平台   

  

當系統建立一個進程同時為其建立它地址空間時,此地址空間中大部分都是閑置的。為了使用這部分地址空間,我們必須調用VirtualAlloc來分配其中的地區。分配地區的操作被稱為預定。
當應用程式預定地址空間地區時,系統會確保預定的地區的起始地址正好是分配粒度的整數倍。分配粒度根據不同的平台而有所不同。現在所有的平台都是用相同的分配粒度。大小為64KB。
而對於預定的地址空間的大小,系統會確保地區的大小正好是系統頁面大小的整數倍。X86和x64系統使用的頁面大小為4KB。
如果應用程式預定一塊大小為10KB的地址空間地區。那麼系統會將該請求取整到頁面大小的整數倍。在x86和x64系統中系統會預定一塊大小為12KB的地區。
當程式不再需要訪問所預定的地址空間地區時,應該釋放該地區可以調用VirtualFree函數來完成。

調撥實體儲存體區
前面預定的地址空間僅僅是標記此塊空間已有人使用,其他程式不能再次預定此塊地區。為了使用所預定的地址空間地區,我們還必須分配實體儲存體器,並將儲存空間映射到所預定的地區。這個過程叫做調撥實體儲存體器。
可以通過調用VirtualAlloc來調撥實體儲存體器。實體儲存體器的調撥是以頁面為單位來調撥的。並不需要為所有預定的地區都調撥物理空間。可以僅調撥需要使用的地區。調撥後程式就可以訪問記憶體空間了。
當程式不需要訪問所預定的地區中已調撥的實體儲存體器,應該釋放實體儲存體器。這個過程被稱為撤銷調撥實體儲存體器。這是通過調用VirtualFreee函數來完成。
實體儲存體器和頁分頁檔
如今的作業系統可以對磁碟進行虛化,來擴充記憶體,這部分地區被稱為分頁檔案或頁分頁檔,其中包含虛擬記憶體,可用程式使用。

記憶體和磁分頁檔案共同構成了總記憶體。

頁分頁檔增大了應用程式可用記憶體的總量。實際上,這時作業系統與cpu分工協作,把記憶體中的一部分儲存到頁分頁檔,並在應用程式的時候再將頁分頁檔中的對應部分載入記憶體。
當應用程式調用VirtualAlloc函數來把實體儲存體器調撥給地址空間地區時,該空間實際上是從硬碟的頁分頁檔中得到的。
為了能夠使用虛擬記憶體,當線程試圖訪問儲存空間中的一個位元組中,cpu必須知道該位元組是在記憶體中還是在磁碟上。
當線程試圖訪問所屬進程地址空間中的一塊地區時,有可能出現兩種情況:
一:要訪問的地區就在記憶體中。此時cpu會把資料的虛擬位址映射到記憶體的物理地址,然後訪問記憶體。
二:不在記憶體中,而是位於頁分頁檔中。這次不成功的訪問將會觸發缺頁中斷。發生缺頁中斷時中斷處理常式會在記憶體中找到一個閑置的頁面,然後將資料從頁分頁檔複製到記憶體中。

當使用者執行一個程式時,系統會開啟應用程式對應的exe檔案。計算出應用程式的代碼和資料的大小。然後系統會預定一塊地址空間,並註明與該地區相關聯的實體儲存體器就是exe檔案本身。系統並沒有從頁分頁檔中分配空間,而是將exe檔案作為程式預定空間的備份存放區器。這樣一來,程式載入很快,頁分頁檔也可以保持在一個合理的大小。

當一個程式位於硬碟上的檔案映像作為地址空間地區對應的實體儲存體器時,我們稱這個檔案映像為記憶體對應檔。當載入一個dll或exe時,系統會自動預定地址空間並把檔案映像映射到該地區。除此之外系統還允許我們手動將資料檔案映射到地址空間。
Windows可以使用多個頁分頁檔。如果多個頁分頁檔位於不同的物理硬碟上,那麼系統就可以運行得更快。我們可以在設定頁分頁檔大小。

windows 地址空間分配

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.