Windows記憶體管理的方式

2021-09-07 13:06:17 字數 2955 閱讀 1847

一、記憶體的概念

1. 物理記憶體:即插在主機板上的記憶體條。他是固定的,記憶體條的容量多大,物理記憶體就有多大(整合顯示卡系統除外)。

但是如果程式執行很多或者程式本身很大的話,就會導致大量的物理記憶體占用,甚至導致物理記憶體消耗殆盡。

2. 虛擬記憶體:虛擬記憶體就是在硬碟上劃分一塊頁面檔案,充當記憶體。

當程式在執行時,有一部分資源還沒有用上或者同時開啟幾個程式卻只操作其中乙個程式時,系統沒必要將程式所有的資源都塞在物理記憶體中,於是,系統將這些暫時不用的資源放在虛擬記憶體上,等到需要時在調出來用。

當程式執行時需要從記憶體中讀出這段程式的**。**的位置必須在物理記憶體中才能被執行,由於現在的作業系統中有非常多的程式執行著,記憶體中不能夠完全放下,所以引出了虛擬記憶體的概念。

把那些不常用的程式片斷就放入虛擬記憶體,當需要用到它的時候在load入主存(物理記憶體)中。這個就是記憶體管理所要做的事,記憶體管理還有另外一件事需要做:計算程式片段在主存中的物理位置,以便cpu排程。

3. 虛擬記憶體可行性的理論基礎:

1、程序中的所有記憶體訪問位址都是邏輯位址,這些邏輯位址在執行時動態的被轉換為實體地址,這意味著乙個程序可以被換入或換出記憶體,使得程序可以執行過程中的不同時刻佔據記憶體中的不同區域。

2、乙個程序可以劃分成許多塊,在執行過程中,這些塊不需要連續的物理記憶體中。

4. 使用虛擬記憶體的好處:

1、在記憶體中保留多個程序。由於對任何特定的程序都僅僅裝入它的某些塊,因此就有足夠的空間來放置更多的程序。

2、程序可以比記憶體的全部空間還大。程式占用的記憶體空間的大小是程式設計中最大的限制之一。通過基於分頁或分段的虛擬記憶體,這些分塊可以按某種覆蓋策略分別載入。

二、windows 記憶體管理方式主要分為:頁式管理,段式管理,段頁式管理。

1. 固定分割槽

說明:在系統生成階段,記憶體被劃分成許多靜態分割槽。程序可以被裝入到大於或等於自身大小的分割槽。

優勢:實現簡單,只需要極少的作業系統開銷。

缺點:由於有內部碎片,對記憶體的使用不充分;活動程序的最大數目是固定的。

2. 動態分割槽

說明:分割槽是動態建立的,因而使得每個程序可以被裝入與自身大小正好相等的分割槽中。

優勢:沒有內部碎片;可以更充分的使用記憶體。

缺點:由於需要壓縮外部碎片,處理器利用率低。

3. 頁式管理:頁式管理的基本原理是將各程序的虛擬空間劃分為若干個長度相等的頁;

頁式管理把記憶體空間按照頁的大小劃分成片或者頁面,然後把頁式虛擬位址與記憶體位址建立一一對應的頁表;並用相應的硬體位址變換機構來解決離散位址變換問題。

頁式管理採用請求調頁或預調頁技術來實現內外存儲存器的統一管理。不需要裝入乙個程序的所有頁,每次只需將程序執行需要的頁裝入到記憶體中不一定連續的頁框中,非駐留頁在以後需要時自動調入記憶體。

其優點是沒有外碎片,每個內碎片不超過頁的大小。

缺點是,程式全部裝入記憶體,要求有相應的硬體支援。例如位址變換機構缺頁中斷的產生和選擇淘汰頁面等都要求有相應的硬體支援。這增加了機器成本,增加了系統開銷。

4. 段式管理:段式管理的基本思想是把程式按照內容或過程函式關係分段,每段都有自己的名字。

乙個使用者作業或程序所包括的段對應乙個二維線形虛擬空間,也就是乙個二維虛擬儲存器。段式管理程式以段為單位分配記憶體,然後通過位址對映機構把段式虛擬位址轉換為實際記憶體實體地址。

不需要裝入乙個程序的所有段,每次只需將程序執行需要的段裝入到記憶體中不一定連續的某些動態分割槽中,非駐留段在以後需要時自動調入記憶體。

其優點是可以分別編寫和編譯,可以針對不同型別的段採用不同的保護,可以按段為單位來進行共享,包括通過動態鏈結進行**共享。

缺點是會產生碎片。

5. 段頁式管理:為了實現段頁式管理,系統必須為每個作業或程序建立一張段表以管理記憶體分配與釋放、缺段處理等。

另外由於乙個段又被劃分成了若干個頁。每個段必須建立一張頁表以把段中的虛頁變換成記憶體中的實際頁面。顯然與頁式管理時相同,頁表中也要有相應的實現缺頁中斷處理和頁面保護等功能的表項。

段頁式管理的段式管理與頁式管理方案結合而成的所以具有他們兩者的優點。

但反過來說,由於管理軟體的增加,複雜性和開銷也就隨之增加了。另外需要的硬體以及占用的記憶體也有所增加。使得速度降下來。

在段頁式的系統中,使用者的位址空間被程式設計師劃分成許多段。每個段一次劃分成許多固定大小的頁,頁的長度等於記憶體中頁框的大小。

從程式設計師的角度看,邏輯位址仍然由段號和段偏移量組成,從系統的角度看,段偏移量可視為指定段中的乙個頁號和頁偏移。

頁式和段式的區別:

(1)頁是資訊的物理單位,分頁是為了實現離散分配方式,減少記憶體的外零頭,提高記憶體利用率,或者說是由於系統管理的需要,而不是使用者的需要。段是資訊的邏輯單位,它含有一組意義相對完整的資訊,分段的目的是為了更好地滿足使用者的需要。

(2)頁大小固定且由系統決定,把邏輯位址劃分為頁號和頁內位址兩部分,是機器硬體實現的,段的長度不固定,卻決定於使用者所編寫的程式,通常由編譯系統在對源程式進行編譯時根據資訊的性質來劃分。

(3)頁內系統位址是一維的,即單一的線性位址空間,程式設計師只需利用乙個識別符號,即可表示乙個位址。分段的作業位址空間是二維的,程式設計師在標識乙個位址時即需要給出段名,又需要給出段內位址。

(4)頁和段都有儲存保護機制。但訪問許可權不同:段有讀、寫和執行三種許可權;而頁只有讀和寫兩種許可權。

WINDOWS記憶體管理方式

windows記憶體管理方式主要分為 段式管理 頁式管理 段頁式管理。頁式管理 頁式管理的基本原理將各程序的虛擬空間劃分成若干個長度相等的頁 page 頁式管理把記憶體空間按頁的大小劃分成片或者頁面 page frame 然後把頁式虛擬位址與記憶體位址建立一一對應頁表,並用相應的硬體位址變換機構,來...

Windows的記憶體管理

一位址空間 1.位址空間 乙個程式最大的定址範圍。對於win32作業系統,最大的定址範圍為2的32次方。2.位址空間的劃分 通常情況下 2.1使用者空間 執行應用程式的 資料等。2.1.1 空指標區 null區 位址範圍 0 0x0000ffff 2.1.2 使用者區 位址範圍 0x0001000 ...

windows記憶體管理

32位平台下,cpu的定址能力為4gb,pc中有些裝置 如顯示卡 都提供自己的裝置記憶體,這部分記憶體會對映到pc的物理記憶體上,也就是讀寫這段物理記憶體位址,其實是在讀寫裝置記憶體位址,而不會讀寫物理記憶體位址。雖然提供了4gb的定址能力,但是實際可能沒有這麼大的物理記憶體,這樣就引入了虛擬記憶體...