我注意到当我运行一个最小的原生Linux x86-64应用程序时,内核就有了一个堆栈设置。当我查看/proc/<pid>/maps
时,我看到了:
7ffffffde000-7ffffffff000 rwxp 00000000 00:00 0 [stack]
当我检查RSP寄存器时,它保持0x7fffffffe0c0
。
我不明白为什么堆栈只有135k字节。我原本预计堆栈mmap在x86-64上的大小为兆字节。或者堆栈mmap是否有一些我不知道的神奇属性?
用户态应用程序是否有责任在运行时以某种方式手动调整堆栈大小以避免堆栈溢出?如果是这样,通过什么机制?或者内核是否自动执行此操作?