**段(.txt):也稱文字段(text segment),存放著程式的機器碼和唯讀資料,可執行指令就是從這裡取得的。如果可能,系統會安排好相同程式的多個執行實體共享這些例項**。這個段在記憶體中一般被標記為唯讀,任何對該區的寫操作都會導致段錯誤(segmentation fault)。
已初始化的資料段(.data):用來存放儲存已初始化變數的全域性變數和靜態變數,資料段在編譯時分配。
未初始化的資料段(.bbs):用來儲存未初始化變數的全域性變數和靜態變數,資料段在編譯時分配。
堆(heap):用來儲存程式執行時分配的變數。堆的大小並不固定,可動態擴張或縮減。其分配由malloc()、new()等這類實時記憶體分配函式來實現。當程序呼叫malloc等函式分配記憶體時,新分配的記憶體就被動態新增到堆上(堆被擴張);當利用free等函式釋放記憶體時,被釋放的記憶體從堆中被剔除(堆被縮減)。堆的記憶體釋放由應用程式去控制。
棧(stack):棧是一種用來儲存函式呼叫時的臨時資訊的結構,如函式呼叫所傳遞的引數、函式的返回位址、函式的區域性變數等。 在程式執行時由編譯器在需要的時候分配,在不需要的時候自動清除。
程式在記憶體中的分布
在現代的作業系統中,當我們說到記憶體,往往需要分兩部分來講 物理記憶體和虛擬記憶體。從硬體上講,虛擬空間是cpu內部的定址空間,位於mmu之前,物理空間是匯流排上的定址空間,是經過mmu轉換之後的空間。一般我們所說的程式在記憶體中的分布指的就是程式在虛擬記憶體中的儲存方式。從低位址到高位址,可分為下...
程式在記憶體中的分布
在現代的作業系統中,當我們說到記憶體,往往需要分兩部分來講 物理記憶體和虛擬記憶體。從硬體上講,虛擬空間是cpu內部的定址空間,位於mmu之前,物理空間是匯流排上的定址空間,是經過mmu轉換之後的空間。一般我們所說的程式在記憶體中的分布指的就是程式在虛擬記憶體中的儲存方式。從低位址到高位址,可分為下...
程式在記憶體中的分布
在現代的作業系統中,當我們說到記憶體,往往需要分兩部分來講 物理記憶體和虛擬記憶體。從硬體上講,虛擬空間是cpu內部的定址空間,位於mmu之前,物理空間是匯流排上的定址空間,是經過mmu轉換之後的空間。一般我們所說的程式在記憶體中的分布指的就是程式在虛擬記憶體中的儲存方式。從低位址到高位址,可分為下...