Linux中記憶體(4G)的劃分區域

2021-10-02 14:04:30 字數 564 閱讀 2620

32 位的windows作業系統上,記憶體的劃分比例是 2:2(使用者空間:記憶體空間),而在linux上是以 3:1的比例劃分的。那麼,linux上使用者空間和核心空間具體又是怎麼劃分的呢?下面我們來簡單介紹以下:

4g 位址空間的範圍是0x0000 0000 ~ 0xffff ffff,其中0xc000 0000 ~ 0xffff ffff是屬於核心空間的,共有1g的大小。核心簡單的說由3個部分組成:

dma區

normal區(大概892m大小)

highmen區(大概128m大小),主要是大於1g的檔案的對映

3g 的使用者空間中,大約有128m的空間作為保留區,不可訪問,位址範圍從0x0000 0000 ~ 0x0804 8000 。使用者記憶體空間上還有存放程式執行的指令(.text檔案)和資料(.data和 .bss檔案)的地方、存放堆和棧的地方(在堆上開闢空間是由低位址向高位址開闢的,而棧則與之相反)、以及存放共享庫、命令列引數和環境變數的地方。如下,為了更清楚的理解,以圖形的方式展現:

4G以上(含4G)記憶體與32位Linux系統

32位的桌面版ubuntu 估計其他發行版桌面版也是 預設不支援4g的記憶體,現如今有兩種方法,一種是安裝server版本的核心,另一種是啟用pae page address extension 實體地址擴充套件 即安裝pae核心。傳統的ia32架構只有32位位址匯流排,只能讓系統容納不超過4gb的...

linux 程序中的記憶體區域劃分

有幾天沒來了,今天翻到了程序中記憶體區域劃分筆記 就簡單寫寫 1 區 text 主要用於存放功能 函式指標指向該區域,比如函式名。2 唯讀常量區 text 存放字串常量和用const修飾的,並且已經初始化的全域性變數和靜態區域性變數。3 全域性區 資料區 data 存放已經初始化的全域性變數和靜態區...

C 中記憶體區域的劃分

那些由編譯器在需要的時候分配,在不需要的時候自動清楚的變數的儲存區。裡面的變數通常是區域性變數 函式引數等。那些由new或者malloc分配的記憶體塊,他們的釋放編譯器不去管,由我們的應用程式去控制,一般乙個new就要對應乙個delete。如果程式設計師沒有釋放掉,那麼在程式結束後,作業系統會自動 ...