記憶體管理的一些基本概念:
位址記憶體管理主要解決以下問題:
程序的位址空間隔離;
提高記憶體的使用效率;
程式執行時重定位問題;
現在的記憶體管理方法就是在程式和物理記憶體之間引入了虛擬記憶體這個概念。虛擬記憶體位於程式和物理記憶體之間,程式只能看到虛擬記憶體,再也不能直接訪問物理記憶體。每個程序都有自己的程序位址空間,這樣就做到了程序隔離。
既然有了虛擬記憶體,解決從虛擬位址對映到實體地址,主要使用分段和分頁兩種該技術。
分段(邏輯位址轉化為線性位址):將程式所需要的記憶體位址空間大小的虛擬空間對映到實體地址空間,虛擬空間中的每個位元組對應於實際空間中的每個位元組。這個對映過程由軟體來設定對映的機制,實際轉換由硬體來完成。而分段機制解決了上述1和3的問題。
分段和分頁的區別:
頁是資訊的物理單位,分頁是為了實現離散分配方式,以減少記憶體的外零頭,提高記憶體利用率或者可以說分頁僅僅是由系統管理的需要,而不是使用者管理的需要。段是資訊的邏輯單位,它含有一組其意義相對完整的資訊。分段的目的是為了更好地滿足使用者的需要;
頁的大小固定且由系統決定,把邏輯位址劃分為頁號和頁內位址兩部分,由硬體實現。段的長度不固定,且決定於使用者所編寫的程式,通常由編譯系統在對源程式進行編譯時根據資訊的性質來劃分。
頁式系統位址空間時一維的,即單一的線性位址空間,程式設計師只需要利用乙個識別符號,即可表示乙個位址。分段的作業位址空間是二維的,程式設計師在標示乙個位址時,既需給出段名,又需要給出段內位址。
下面是乙個程序呼叫記憶體的大致過程:
劃分虛擬記憶體之後,此時並沒有分配實際的物理記憶體。(延遲分配)
當程式真正使用這塊記憶體,才會產生請頁機制發生請頁請求;
物理記憶體會建立對應的頁表;
參考資料:
linux記憶體管理基本概念:
linux記憶體管理:
linux中的記憶體管理:
Linux記憶體管理機制
經常遇到一些剛接觸linux 的新手會問記憶體占用怎麼那麼多?在linux中經常發現空閒記憶體很少,似乎所有的記憶體都被系統占用了,表面感覺是記憶體不夠用了,其實不然。這是linux記憶體管理的乙個優秀特性,在這方 面,區別於windows的記憶體管理。主要特點是,無論物理記憶體有多大,linux ...
linux記憶體管理機制
linux系統的 物理記憶體就是實際記憶體 虛擬記憶體是為了避免物理記憶體不足而產生的概念,其是磁碟空間虛擬出來的一塊邏輯記憶體,即交換空間 swap space 將不經常使用的資料放在虛擬空間,這樣物理空間有足夠的空閒空間放經常使用的資料。交換空間的大小一般是物理記憶體的幾倍。使用命令free m...
記憶體管理機制
記憶體管理 jvm將記憶體分成三大主要區域 堆,棧,方法區,用來儲存資料。堆 堆中主要儲存引用型別物件,給成員變數分配空間。棧 jvm在執行程式時,在棧中會為每乙個方法都提供儲存空間叫棧幀,用來儲存方法中的區域性變數。方法區 用來儲存jvm載入的位元組碼檔案的資訊 類的資訊 包含類的方法,方法只有乙...