64비트 시스템에서 Linux 스택 크기 제한이 그렇게 낮은 이유는 무엇입니까?

64비트 시스템에서 Linux 스택 크기 제한이 그렇게 낮은 이유는 무엇입니까?

내가 아는 한, Linux 스택 크기는 8MB로 제한되어 있지만 64비트 시스템에서는 예를 들어 4GB로 크게 늘릴 수 없는 이유가 없습니다. 이를 통해 프로그래머는 본질적으로 스택에 큰 값을 저장하거나 반복 대신 재귀 알고리즘을 사용하는 것에 대해 걱정할 필요가 없습니다.

또한 스택 할당이 힙 할당보다 훨씬 빠르기 때문에 더 빨라야 합니다. 우리는 스택에 할당된 데이터 구조의 완전히 새로운 클래스를 볼 수 있습니다. std::stack_vector<T>스택에 할당되었다고 상상해보세요.

내가 보지 못하는 단점이 있나요? 아니면 아무도 변화를 일으킬 만큼 관심을 두지 않는 걸까요?

답변1

처음에는 가상 메모리를 절약하기 위해 스택 크기를 제한할 수 있지만 추가 이점은 무한 재귀를 포착한다는 것입니다. 실제로 깊은 재귀가 필요한 알고리즘은 흔하지 않으므로 큰 스택을 사용하면 버그가 될 가능성이 더 높습니다. 64비트 아키텍처로 전환해도 이러한 상황은 줄어들지 않습니다.

일부 데이터 유형이 더 크기 때문에 알고리즘은 64비트 모드에서 더 많은 스택 공간을 사용할 수 있지만 스택 크기 제한이 문제가 될 만큼 많지는 않을 것입니다.

실제로 이러한 제한은 대규모 배열이 스택에 할당되는 것을 방지하므로 더 효율적일 수 있습니다. 하지만 위의 무한 재귀 검사를 잃을 만큼 이 문제를 해결하는 것이 중요합니까?

관련 정보