Windows記憶體管理的方式

來源:互聯網
上載者:User

標籤:保留   好處   利用   優勢   物理地址   系統   convert   原理   成本   

一、記憶體的概念

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

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

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

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

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

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

 

3. 虛擬記憶體可行性的理論基礎:1、進程中的所有記憶體訪問地址都是邏輯地址,這些邏輯地址在運行時動態被轉換為物理地址,這意味著一個進程可以被換入或換出記憶體,使得進程可以執行過程中的不同時刻佔據記憶體中的不同地區。2、一個進程可以劃分成許多塊,在執行過程中,這些塊不需要連續的實體記憶體中。  4. 使用虛擬記憶體的好處:1、在記憶體中保留多個進程。由於對任何特定的進程都僅僅裝入它的某些塊,因此就有足夠的空間來放置更多的進程。2、進程可以比記憶體的全部空間還大。程式佔用的記憶體空間的大小是程式設計中最大的限制之一。通過基於分頁或分段的虛擬記憶體,這些分塊可以按某種覆蓋策略分別載入。  

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

 

1. 固定分區   說明:在系統產生階段,記憶體被劃分成許多靜態分區。進程可以被裝入到大於或等於自身大小的分區。   優勢:實現簡單,只需要極少的作業系統開銷。   缺點:由於有內部片段,對記憶體的使用不充分;活動進程的最大數目是固定的。  2. 動態分區  說明:分區是動態建立的,因而使得每個進程可以被裝入與自身大小正好相等的分區中。  優勢:沒有內部片段;可以更充分的使用記憶體。  缺點:由於需要壓縮外部片段,處理器利用率低。  

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

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

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

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

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

 

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

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

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

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

                     缺點是會產生片段。

 

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

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

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

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

 

分段和分頁都有它們的長處:
  • 分頁對程式員是透明的,它消除了外部片段,因而可以更有效地使用記憶體,並且移入或移出記憶體的塊是固定的,大小相等的。
  • 分段對程式員是可見的,它具有處理不斷增長的資料結構的能力以及支援共用和保護的能力。
  • 在段頁式的系統中,使用者的地址空間被程式員劃分成許多段。每個段一次劃分成許多固定大小的頁,頁的長度等於記憶體中頁框的大小。
  • 從程式員的角度看,邏輯地址仍然由段號和段位移量組成,從系統的角度看,段位移量可視為指定段中的一個頁號和頁位移。

 

頁式和段式的區別:

  相似:離散分配,地址映射機構來實現地址轉換

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

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

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

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.