2012-11-16 86 views
-1

想知道什么时候进程开始如何确定堆栈需求,或每个进程是否以默认堆栈大小开始,并根据需求动态增长。
在我的系统上,堆栈大小的软限制为10M,硬限制为unlimited。这是否意味着堆栈可以增长到最大可用RAM?
如果我在我的过程中十个线程,将堆叠中的所有不同(假设我没有设置堆栈属性)内核如何决定堆栈大小

+0

恕我直言'人rlimit'给出了所有的答案。 – wildplasser

+0

@wildplasser恕我直言,你还没有明白我在问什么 –

+0

内核不会决定线程的堆栈大小。 'pthread_create'函数确实设置了每个线程的堆栈。 –

回答

1

每个进程都始于一个最小尺寸的用户空间堆栈,它会自动扩展为规模需要。

如果软限制被违反,那么该进程将被终止。这个过程可能会提高自己的软限制,但不会高于硬限制。

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