進程的空間模型
Linux下使用虛擬內存空間給每一個進程,32位操作系統下,每個進程都有獨立的4G虛擬內存空間。
其中包括:
- 內核區:用戶代碼不可見的區域,頁表就存放在這個區域中。
- 用戶區:
a、代碼段:只可讀,不可寫,程序代碼段。
b、數據段:保存全局變量,靜態變量的區域。
c、堆區:就是動態內存,通過malloc,new申請內存,有一個堆指針,可以通過brk系統調用調整堆指針。
d、文件映射區域:通過mmap系統調用,如動態庫,共享內存等映射物理空間的內存區域。可以單獨釋放,不會產生內存碎片。
e、棧區:用於維護函數調用的上下文空間,用ulimit -s 查看。一般默認為8M。