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