程序的虛擬位址空間4G劃分

2021-07-14 17:52:51 字數 429 閱讀 5012

當乙個程

序執行的時候

而這4g也劃分成了兩大塊。第一塊1g要分給核心,我們使用者是看不見也進不去的。

第二塊3g是給使用者使用的。就像地拿到手了,還要蓋房裝修,我們使用者拿到這3g也要做同樣的事,這3g也要分成好幾塊。

3g:①棧空間:特點是由系統管理,先進後出,裡面放了區域性變數、函式形參、自動變數。

②堆空間:特點是由使用者管理,先進後出,我們可以用malloc、ralloc、calloc來分配空間。

③資料段:資料段裡面又分三塊,第一塊是bss,儲存未初始化的全域性變數;第二塊是rodata,儲存了常量;第三塊是.data(靜態資料區)儲存了初始化的全域性變數還有static修飾的變數。  

④**段:存放了源**。

4G虛擬位址空間

在linux系統中,使用者空間和核心空間所佔的比例為3 1 在windows系統中,使用者空間和核心空間所佔的比例為2 2 下面以linux系統為例 text 指令段,也叫 段,區域性變數也是指令,但區域性變數儲存在棧上,當 執行時才在棧中預留好的區域中開闢。data 資料段儲存 中的各種資料,包括...

4G虛擬位址空間布局

一 其中,使用者程序部分分段儲存內容如下表所示 按位址遞增順序 名稱儲存內容 段 text 可執行 字串字面值 唯讀變數 資料段 data 已初始化且初始值為非0的全域性變數和靜態區域性變數 bss段 未初始化或初始值為0的全域性變數和靜態區域性變數 棧區域性變數 函式引數 返回位址等 堆動態分配的...

程序的虛擬位址空間劃分

虛擬位址 virtual address cpu啟動保護模式後,程式執行在虛擬位址空間中。注意,並不是所有的 程式 都是執行在虛擬位址中。cpu在啟動的時候是執行在實模式的,bootloader以及核心在初始化頁表之前並不使用虛擬位址,而是直接使用實體地址的。每乙個程序被給予它的非常私有的虛擬位址空...