Process Address Space

Virtual Address Space (VMA) 或 Process Address Space

術語

Segments

對於 elf 當中,會將透過 segment 的機制分配各種權限,並且一個 segment 當中可以放入多個 section,如 bss section 放到可以寫可讀的 segment 當中,在描述上,稱之 .data, .bss 為 section 會比較合理。 在 ELF format 中,上述幾個 section 也是放在 section 的儲存位置。

參見

Linux 的 Address space

kernel 的 address space

要怎麼知道不同程式語言的內存結構

如果是指 virtual address space,最底層跟機器有關,會影響上面程式實作的方法,再來 page 跟作業系統與硬體(如 MMU)有關,執行檔格式跟 loader, linker 相關,windows 和 linux 的 memory layout 是不同的,編譯器也會影響 linker, loader 的參數,往上可能是標準函式庫的實作,比如 dlmalloc 這類 allocator,是實作在 glibc 這類函數庫中,然後有些程式可能會自己實作記憶體管理機制,比如 chrome 就有實踐自己的分配機制與 GC。

也因此如果要了解不同語言的內存結構,首先需要知道這個語言底下是採用哪些軟體框架與架構、函式庫、編譯器、作業系統、硬體等等。

Reference


Operating System Process System Program