Windows 記憶體結構體系(讀書筆記)

2021-05-22 05:57:20 字數 1668 閱讀 6650

物理儲存器+ 頁交換檔案=>

虛擬位址空間 對映

虛擬位址空間

n定義:程式的記憶體位址空間。 n

大小:在x86中,大小為4gb;在x64中,大小為16eb。

n使用原則: 1.

使用virtualalloc預定記憶體位址空間,使用virtualfree釋放位址空間區域。 2.

當應用程式預定位址空間時,系統會確保區域的起始位址正好的是分配粒度的整數倍。分配粒度因cpu平台不同而不同,一般大小為64kb。 3.

當應用程式預定位址空間的一塊區域時,系統會確保區域大小正好是系統頁面大小的整數倍。頁面大小會因cpu平台不同而不同,x86和x64的頁面大小為4kb,ia-64頁面大小為8kb。

** 1程序位址空間劃分

位址空間分割槽 作用

空指標賦值分割槽

幫助程式設計師捕獲對空指標的賦值。沒有任何辦法使我們分配到這一區域的虛擬記憶體。每個程序有屬於自己的專有的位址空間,當程序中的執行緒執行時,他們只能訪問屬於該程序的記憶體。

使用者模式分割槽

程序位址空間的駐地。通常小於2gb在x86的機子上,可以通過/largeaddressaware的方式使用大於2gb的記憶體位址空間。

核心模式分割槽

作業系統**的駐地。該分割槽的**和資料都被完全保護起來。

64kb

禁入分割槽

物理儲存器

n定義:物理記憶體。 n

使用規則:以頁面為單位來預定。

頁交換檔案

n定義:發揮記憶體作用的磁碟檔案。其中包含虛擬記憶體,可供程序使用。 n

使用規則: 1.

頁交換檔案的使用不是必須的。 2.

系統中頁交換檔案的大小是決定應用程式可用記憶體總量的最重要因素,機器實際裝備的記憶體總量對他的影響相對較小。 3.

系統需要在記憶體和頁交換檔案之間複製頁面的頻率越高,硬碟顛簸的越厲害,系統執行也越慢。 4.

windows

可以使用多個頁交換檔案。如果多個頁交換檔案位於不同的物理硬碟上,那麼系統可以執行得更快。 n

記憶體對映檔案 1.

定義:

把乙個程式位於硬碟上的檔案對映用作位址空間區域對應的物理儲存器時,我們稱這個檔案對映為記憶體對映檔案。 2.

操作過程:

當使用者要求執行乙個應用程式時,系統會開啟該應用程式對應的exe檔案並計算出應用程式的**和資料的大小。然後系統預定一塊位址空間,並註明與該區域相關聯的物理儲存器就是exe或dll檔案本身。

當載入乙個exe或是dll時,系統會自動預定位址空間並把檔案映像對映到該區域。資料檔案也可以被對映到位址空間。

題外話:

cpu體系結構中的問題:資料對齊 n

定義:把資料的位址模除資料大小,如果結果為0,那麼資料就是對齊的。 n

原因:

1.cpu

發生異常。 2.

cpu會通過多次訪問已對齊的記憶體,來取得整個錯位資料。 n

使用規則: 1.

x86cpu

會預設處理資料錯位問題。 2.

ia-64

不能自動處理資料錯位的問題。可以是使用seterrormode(…)函式來設定ac標誌位而進一步使cpu處理資料錯位。或使用_unaligned關鍵字來通知編譯器資料未經對齊,編譯器生成額外cpu指令已訪問資料。

參考文件

《windows核心程式設計(第5版)》

jeffrey richer

Oracle 體系結構二 記憶體結構

oracle例項由共享記憶體塊 sga 以及大量的後台程序構成。sga必須包含的資料結構 可選的資料結構 使用者會話還需要伺服器端的記憶體。此記憶體是不共享的pga。每個會話都有自己專用的pga。資料庫緩衝區快取 資料庫緩衝區快取是oracle用來執行sql的工作區域。在更新資料時,使用者的會話不直...

第13章 Windows記憶體體系結構學習筆記

每個程序都有自己的虛擬位址空間。當程序中的各執行緒執行時,它們只能訪問屬於該程序的記憶體。1 空指標賦值分割槽 這一分割槽是程序位址空間中從0x00000000到0x0000ffff的閉區間,保留該分割槽的目的是為了幫助程式設計師捕獲空指標的值。如果程序中的執行緒試圖讀取或寫入位於這一分區內的記憶體...

windows記憶體結構 1

作業系統使用的記憶體結構是理解作業系統如何執行的重要關鍵 建立程序時,系統會賦予程序4gb的虛擬空間位址 32位 16eb的虛擬空間 64位 32位從0x00000000 0xffffffff,64位從0x0000000000000000 0xffffffffffffffff 需要注意的是虛擬兩個字...