c程式在虛擬記憶體中的位址順序

2021-07-11 23:18:30 字數 769 閱讀 8399

c程式在虛擬記憶體中的位址從低位址到高位址的順序依次是:

text段(**區)、.rodata段(常量區)、.data段(已初始化的全域性變數區)、.bss段(未初始化的全域性變數區)、堆、動態庫對映區、棧、核心區(使用者態**不可訪問)

bss段:(bss segment)通常是指用來存放程式中未初始化的全域性變數的一塊記憶體區域。bss是英文block started by symbol的簡稱。bss段屬於靜態記憶體分配。

資料段 :資料段(data segment)通常是指用來存放程式中已初始化的全域性變數的一塊記憶體區域。資料段屬於靜態記憶體分配。 

**段: **段(code segment/text segment)通常是指用來存放 程式執行**的一塊記憶體區域。這部分區域的大小在程式執行前就已經確定,並且記憶體區域通常屬於唯讀 , 某些架構也允許**段為可寫,即允許修改程式。在**段中,也有可能包含一些唯讀的常數變數 ,例如字串常量等。程式段為程式**在記憶體中的對映.乙個程式可以在記憶體中多有個副本.

堆(heap) :堆是用於存放程序執行中被動態分配的記憶體段,它的大小並不固定,可動態擴張或縮減。當程序呼叫malloc/free等函式分配記憶體時,新分配的記憶體就被動態新增到堆上(堆被擴張)/釋放的記憶體從堆中被剔除(堆被縮減)

棧(stack) :棧又稱堆疊, 存放程式的區域性變數(但不包括static宣告的變數, static 意味著 在資料段中存放變數)。除此以外,在函式被呼叫時,棧用來傳遞引數和返回值。由於棧的後進先出特點,所以棧特別方便用來儲存/恢復呼叫現場。從這個意義上講,我們可以把堆疊看成乙個寄存、交換臨時資料的記憶體區。

物理記憶體(實體地址)與虛擬記憶體(虛擬位址)的區別

物理記憶體 實體地址 與虛擬記憶體 虛擬位址 的區別 1 應用中的概念。物理記憶體,在應用中,自然是顧名思義,物理上,真實的插在板子上的記憶體是多大就是多大了。看機器配置的時候,看的就是這個物理記憶體。虛擬記憶體,這個概念就要稍微了解一下cpu了,只是稍微,畢竟我們現在談的是應用中的概念。我們應該知...

物理記憶體和虛擬記憶體的區別 及 什麼是虛擬位址空間

物理記憶體 記憶體條 當開啟程式時,系統會將這些程式載入到物理記憶體上。虛擬記憶體 硬碟 虛擬的不是物理記憶體,而是代替物理記憶體行使儲存的功能,物理記憶體的執行程式的功能是無法用虛擬記憶體來完成的。物理記憶體與虛擬記憶體的關係 當執行程式過多,物理記憶體不夠用時,系統會將一部分硬碟空間當記憶體使用...

基於C 的虛擬記憶體頁面管理

一 實驗目的 作業系統課程設計的主要任務是研究計算機作業系統的基本原理和演算法,掌握作業系統的程序管理 儲存管理 檔案管理和裝置管理的基本原理與主要演算法。目的是使學生掌握常用作業系統 如dos windows或linux 的一般管理方法,了解它是如何組織和運作的,對作業系統的核心概念和演算法有乙個...