1. 程式人生 > >記憶體管理分析之一:Linux程序空間與虛擬地址的好處

記憶體管理分析之一:Linux程序空間與虛擬地址的好處

使用虛擬地址的好處

現代作業系統使用了虛擬地址的方式管理各個程序對記憶體的使用,這使得應用層程式設計方便、安全,主要體現在如下方面:

1,  讓每個程序擁有了相同的、獨立記憶體空間,相互之間不會干擾

2,  讀寫記憶體更安全。由於系統和MMU的限制,使得程序無法操作到其他程序的資料。

3,  不連續的物理空間可以對映成連續的虛擬地址空間

4,  程序分配的記憶體空間只有在實際使用時,才會觸發缺頁異常來分配實際物理空間,從而最大程度減少了記憶體空間的浪費。

32位系統的虛擬地址空間

32位系統的每個程序得到了完全相同的4GB大小的虛擬地址空間,具體的記憶體分佈見下圖:


由此可見:從上到下(地址從高到低)依次為

(函式內部區域性變數),動態連結庫, (動態分配記憶體),bss(存未初始化的全域性變數),資料段(存初始化的全域性變數),文字段(存程式碼)

1,棧空間大小有具體系統設定來確定,一般為8MB左右

2,  堆空間大小為去除了動態連結庫、data段、text段後的大小,一般為2GB左右

64位系統虛擬地址空間