2012-11-16 126 views
-1

想知道什麼時候進程開始如何確定堆棧需求,或每個進程是否以默認堆棧大小開始,並根據需求動態增長。
在我的系統上,堆棧大小的軟限制爲10M,硬限制爲unlimited。這是否意味着堆棧可以增長到最大可用RAM?
如果我在我的過程中十個線程,將堆疊中的所有不同(假設我沒有設置堆棧屬性)內核如何決定堆棧大小

+0

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

+0

@wildplasser恕我直言,你還沒有明白我在問什麼 –

+0

內核不會決定線程的堆棧大小。 'pthread_create'函數確實設置了每個線程的堆棧。 –

回答

1

每個進程都始於一個最小尺寸的用戶空間堆棧,它會自動擴展爲規模需要。

如果軟限制被違反,那麼該進程將被終止。這個過程可能會提高自己的軟限制,但不會高於硬限制。

即使軟限制是無限的,最大可用堆棧大小也會受到進程地址空間中其他映射的限制,因爲它必須是連續的。