在linux下,如果malloc不能從預分配頁面分配數據塊。它使用mmap()或brk()分配新頁面。我想澄清幾件事:Linux頁面分配
- 我不明白以下陳述,我認爲當我使用mmap()或brk()時,內核映射了我一整頁。但是分配器只是將我從新頁面中請求的內容分配給我?在這種情況下試圖訪問未分配的空間(在新映射的頁面中)不會導致頁面錯誤? (據我所知,它不推薦)
提供的libc分配器管理的每個頁面:切片他們分成較小的塊,將其分配給進程,釋放他們,等等。例如,如果你的程序使用4097個字節總,你需要使用兩頁,即使在現實中分配給你的地方4105之間,以4109個字節
- 如何進行分配知道VMA bounders?(我假設沒有使用系統調用),因爲保存該信息的VMA結構只能從內核模式訪問?