1. 程式人生 > >Linux中程序記憶體結構

Linux中程序記憶體結構

組成(由上至下,由高地址到低地址)

對映到虛擬記憶體的Kcrnel核心:無法被程式訪問

命令列引數和環境變數

棧(使用者棧):由上至下伸長,棧幀包括函式實參和區域性變數(自動變數)和函式的呼叫連結資訊

未分配的記憶體

:由下至上伸長,執行時動態分配的空間

未初始化的資料段(BSS):未顯式初始化的全域性變數和靜態變數,不分配儲存空間知道執行時

初始化的資料段:顯式初始化的全域性變數和靜態變數,當程式載入到記憶體時可以直接讀取值

文字(程式程式碼)

虛擬記憶體管理

每個程式只有部分頁儲存在實體記憶體中,需要時調換。

特性:時間區域性性和空間區域性性

組織:頁表

頁表:每個條目指出虛擬頁面在RAM的位置,或者表明當前駐留在磁碟上,並不是所有記憶體都在頁表上有。

虛擬記憶體管理的優點

  1. 程序與程序,程序與核心相互隔離,不可讀取另一個程序的記憶體或核心
  2. RAM中能容納更多程序