Недавно я попытался представить себе, как стек памяти, вероятно, рассматривается внутри ядра Linux, но не может придумать что-либо твердое. Я знаю, что ядро использует свои собственные функции для управления динамической памятью, но я понятия не имею, как он управляет только нормальной памятью стека C, потому что в конце концов это может быть реализовано с помощью обычного C и скомпилировано с помощью обычного GCC. Насколько мне известно, распределение памяти в стеке обычно рассматривается с помощью формы libc при работе с операционными системами и даже над чем-то вроде AVR. Насколько мне известно, хотя ядро Linux не зависит от libc?Ячейка стека внутри ядра Linux
Я не совсем уверен, как управление памятью стека делегировано в libc в первую очередь, хотя, как представляется, это встроенная функция языка. Все, что я могу себе представить, это то, что он каким-то образом обобщен (или реализован) таким образом, что провайдер может быть назначен либо позже, либо, возможно, как часть процесса компиляции. Может ли кто-нибудь пролить свет на это для меня?
Когда начинается новый процесс, он имеет стек пользовательского пространства, отображаемый в адресное пространство процесса, и стек ядра для использования при выполнении системных вызовов. Указатель стека начинает указывать на стек. libc не участвует в этом * вообще *. Опубликованный ответ несколько сбивает с толку, но, похоже, правильно, что двоичные файлы ELF могут контролировать, какую конфигурацию стека они получают: http://stackoverflow.com/questions/18278803/how-does-elf-file-format -defines-зе-стек. По умолчанию не будет такого раздела, а затем вы получите стек по умолчанию при выборе по умолчанию аргумента virt. –