linux - 内核如何决定堆栈大小

标签 linux gcc linux-kernel stack-overflow

只是想知道进程何时启动,其堆栈要求是如何确定的,或者每个进程是否以默认堆栈大小启动并根据要求动态增长。
在我的系统上,堆栈大小的软限制为 10M,硬限制为 unlimited。这是否意味着堆栈可以增长到最大可用 RAM?
如果我的进程中有十几个线程,所有线程的堆栈大小都会不同(假设我没有设置堆栈属性)

最佳答案

每个进程都以最小大小的用户空间堆栈启动,该堆栈会根据需要自动扩展。

如果违反软限制,则进程将终止。该进程可以提高自己的软限制,但不能高于硬限制。

即使软限制是无限的,最大可用堆栈大小也受到进程地址空间中其他映射的限制,因为它必须是连续的。

关于linux - 内核如何决定堆栈大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13425379/

相关文章:

linux - 使用 gcc 编译 64 位 linux 内核

linux-kernel - Linux内核如何解析vga=参数?

c - 我想知道在 Linux 中使用 fork() 创建子进程的两种方式有什么不同?

python - 如何在 blender 上使用Anaconda环境?

python - 如何在 Django 的一个 HTML 页面中打开两个日志文件?

linux - 蓝牙 LE 信号强度 Linux

android - 在 Mac 上编译 x264 : "No working C compiler found" and "arm-linux-androideabi-gcc: command not found"

linux - Linux 上两个 .tar.gz 文件列表的区别

c++ - -O3 模式下的段错误?

linux - SIGSTOP 在 Linux 内核中是如何工作的?