記憶體管理分析之一:Linux程序空間與虛擬地址的好處
阿新 • • 發佈:2019-01-02
使用虛擬地址的好處
現代作業系統使用了虛擬地址的方式管理各個程序對記憶體的使用,這使得應用層程式設計方便、安全,主要體現在如下方面:
1, 讓每個程序擁有了相同的、獨立記憶體空間,相互之間不會干擾
2, 讀寫記憶體更安全。由於系統和MMU的限制,使得程序無法操作到其他程序的資料。
3, 不連續的物理空間可以對映成連續的虛擬地址空間
4, 程序分配的記憶體空間只有在實際使用時,才會觸發缺頁異常來分配實際物理空間,從而最大程度減少了記憶體空間的浪費。
32位系統的虛擬地址空間
32位系統的每個程序得到了完全相同的4GB大小的虛擬地址空間,具體的記憶體分佈見下圖:
由此可見:從上到下(地址從高到低)依次為棧 (函式內部區域性變數),動態連結庫, 堆(動態分配記憶體),bss段(存未初始化的全域性變數),資料段(存初始化的全域性變數),文字段(存程式碼)
1,棧空間大小有具體系統設定來確定,一般為8MB左右
2, 堆空間大小為去除了動態連結庫、data段、text段後的大小,一般為2GB左右
64位系統虛擬地址空間