linux記憶體管理

2022-03-20 02:34:25 字數 646 閱讀 4388

為了有效的管理記憶體,linux提出了虛擬記憶體的概念。虛擬記憶體是硬體異常、主存、硬體位址翻譯、磁碟、和核心軟體的完美互動。

虛擬記憶體提供了三個重要的能力:

1、將記憶體看作是磁碟的快取

2、使得程序具一致的位址空間(線性位址)

3、使得程序的位址空間相互獨立

核心會為每個程序維護乙個單獨的任務結構(pcb / task_struct),其中有乙個條目指向mm_struct,它描述了虛擬記憶體的當前狀態。其中有兩個欄位pgd和mmap,pgd指向一級頁表的基址,mmap指向乙個虛擬記憶體區域結構的鍊錶。

也就說每個程序都會有乙個獨立的頁表,系統可以通過mmu將虛擬位址對映位實體地址。mmu通過虛擬位址的虛擬頁號可以查詢到儲存在主存上的當前程序的頁表條目,然後就可以獲取物理頁號,通過與頁內偏移的結合就可獲取實體地址。

特點:1、虛擬位址是連續的,相應的實體地址可能不是

2、可能有多級頁表,只有下一級頁表被分配才會建立下一級頁表,從而節約記憶體

3、頁表查詢分為命中和不命中,命中完全由硬體處理,不命中時核心會參與工作,包括選取乙個犧牲頁,更改頁表。

程式通過分段劃分為多個模組,如**段、資料段等,給個段的大小不一樣,可以存貯在記憶體不連續的區域。實體地址的定址過程需要用到段表(類似於頁表的資料結構)。分段的目的是為了更好的滿足使用者的需求。

Linux記憶體管理

本文首先介紹一下linux記憶體管理方式,著重說明一下使用者空間的記憶體管理,包括linux虛擬對映以及glibc中malloc的實現 然後簡要介紹單程序多執行緒的記憶體管理方式,主要涉及各執行緒堆疊空間的分配 linux 採用兩級保護機制,隔離核心空間和使用者程式空間,使使用者程式無法直接訪問核心...

Linux記憶體管理

本文首先介紹一下linux記憶體管理方式,著重說明一下使用者空間的記憶體管理,包括linux虛擬對映以及glibc中malloc的實現 然後簡要介紹單程序多執行緒的記憶體管理方式,主要涉及各執行緒堆疊空間的分配 linux採用兩級保護機制,隔離核心空間和使用者程式空間,使使用者程式無法直接訪問核心,...

Linux記憶體管理

首先我要說,我這是轉貼,轉的cu論壇上 nonameboy 的帖子,你可以連線過去看看。今天因為要解釋系統中可用記憶體的大小,用google看了半天,還有在cu上找了關天,竞然沒有發現有比較好的章,估計很多人都沒有注意到,懂了以後又沒有整理出來。在cu上看了很多文章說什麼memory leak和li...