我最近試圖想象如何在Linux內核中處理堆棧內存,但無法提供任何可靠的東西。我知道內核使用自己的函數進行動態內存管理,但是我不知道它是如何管理普通的C堆棧內存的,因爲畢竟,這可以用普通的C實現並且用普通的GCC編譯。就我而言,堆棧內存分配通常在處理操作系統時甚至在處理AVR時通過libc的形式處理。據我所知,儘管Linux內核不依賴於libc?Linux內核中的堆棧內存
我不能完全肯定的內存管理是如何棧委託擺在首位到libc雖然它似乎是一個語言功能構建的。我可以想像的是,它以某種方式編譯(或實現),以便提供者可以在之後或可能作爲編譯過程的一部分被分配。有人可以幫我解釋一下嗎?
當一個新進程啓動時,它有一個映射到進程地址空間的用戶空間堆棧和一個用於進行系統調用的內核堆棧。堆棧指針開始指向堆棧。 libc並沒有參與這個* *。發佈的答案有點令人困惑,但它似乎是正確的關於ELF二進制文件能夠控制他們得到什麼樣的堆棧設置:http://stackoverflow.com/questions/18278803/how-does-elf-file-format - 定義最堆棧。缺省情況是不具有這樣的部分,然後在內核默認的virt地址選擇處獲得默認堆棧。 –