在現代的作業系統中,當我們說到記憶體,往往需要分兩部分來講:物理記憶體和虛擬記憶體。從硬體上講,虛擬空間是cpu內部的定址空間,位於mmu之前,物理空間是匯流排上的定址空間,是經過mmu轉換之後的空間。
一般我們所說的程式在記憶體中的分布指的就是程式在虛擬記憶體中的儲存方式。
從低位址到高位址,可分為下面幾段:
預留記憶體位址(作業系統維護的記憶體位址,不可訪問)
程式**區(唯讀,存**和一些其他的東西);
data段(存初始化的全域性變數和static變數,另外還有文字常量區,常量字串就是放在這裡,程式結束後有系統釋放);
bss段(存未初始化的全域性變數和static變數);
堆(由低位址向高位址增長,一般new和malloc分配,由程式設計師分配釋放);
共享庫檔案(呼叫的庫檔案,位於堆和棧之間);
棧(由高位址向低位址增長,和堆的增長方式相對,對不同的os來說,棧的初始大小有規定,可以修改,目前預設一般為2m,由編譯器自動分配釋放);
再上面存的都是作業系統和核心呼叫的一些記憶體位址。
如圖所示:
再分享一下我老師大神的人工智慧教程吧。零基礎!通俗易懂!風趣幽默!還帶黃段子!希望你也加入到我們人工智慧的隊伍中來!
在現代的作業系統中,當我們說到記憶體,往往需要分兩部分來講:物理記憶體和虛擬記憶體。從硬體上講,虛擬空間是cpu內部的定址空間,位於mmu之前,物理空間是匯流排上的定址空間,是經過mmu轉換之後的空間。
一般我們所說的程式在記憶體中的分布指的就是程式在虛擬記憶體中的儲存方式。
從低位址到高位址,可分為下面幾段:
預留記憶體位址(作業系統維護的記憶體位址,不可訪問)
程式**區(唯讀,存**和一些其他的東西);
data段(存初始化的全域性變數和static變數,另外還有文字常量區,常量字串就是放在這裡,程式結束後有系統釋放);
bss段(存未初始化的全域性變數和static變數);
堆(由低位址向高位址增長,一般new和malloc分配,由程式設計師分配釋放);
共享庫檔案(呼叫的庫檔案,位於堆和棧之間);
棧(由高位址向低位址增長,和堆的增長方式相對,對不同的os來說,棧的初始大小有規定,可以修改,目前預設一般為2m,由編譯器自動分配釋放);
再上面存的都是作業系統和核心呼叫的一些記憶體位址。
如圖所示:
程式在記憶體中的分布
在現代的作業系統中,當我們說到記憶體,往往需要分兩部分來講 物理記憶體和虛擬記憶體。從硬體上講,虛擬空間是cpu內部的定址空間,位於mmu之前,物理空間是匯流排上的定址空間,是經過mmu轉換之後的空間。一般我們所說的程式在記憶體中的分布指的就是程式在虛擬記憶體中的儲存方式。從低位址到高位址,可分為下...
程式在記憶體中的分布
在現代的作業系統中,當我們說到記憶體,往往需要分兩部分來講 物理記憶體和虛擬記憶體。從硬體上講,虛擬空間是cpu內部的定址空間,位於mmu之前,物理空間是匯流排上的定址空間,是經過mmu轉換之後的空間。一般我們所說的程式在記憶體中的分布指的就是程式在虛擬記憶體中的儲存方式。從低位址到高位址,可分為下...
程式在記憶體中的分布
在現代的作業系統中,當我們說到記憶體,往往需要分兩部分來講 物理記憶體和虛擬記憶體。從硬體上講,虛擬空間是cpu內部的定址空間,位於mmu之前,物理空間是匯流排上的定址空間,是經過mmu轉換之後的空間。一般我們所說的程式在記憶體中的分布指的就是程式在虛擬記憶體中的儲存方式。從低位址到高位址,可分為下...