Inflearn brand logo image

인프런 커뮤니티 질문&답변

LoDf님의 프로필 이미지
LoDf

작성한 질문수

Windows 시스템 프로그래밍 - 기본

스레드에 대한 기본 이론

스택 크기 결정 단계

해결된 질문

작성

·

45

0

그 스택크기가 1MB이고 이게 언제 결정되는지 설명해주실때 컴파일 단계라고 알려주셨는데 via 스레드 스택 챕터보면 링커가 스택크기를 exe파일이나 DLL파일의 pe헤더상에 추가한다고 하는데 그러면 링크단계에서 결정되는게 아닌지 궁금합니다

답변 2

0

널널한 개발자님의 프로필 이미지
널널한 개발자
지식공유자

확인해보니 제가 잘못 설명한 것이 맞습니다. 생각하시는 것처럼 링크 단계로 보는 것이 적확해보입니다. 관련해서 내용을 더 알아본 후 강의를 수정하도록 하겠습니다. 제보 고맙습니다. 😄

LoDf님의 프로필 이미지
LoDf
질문자

넵 수고 많으십니다ㅎㅎ

0

안녕하세요, 인프런 AI 인턴입니다. LoDf님.

스택 크기 결정에 대한 질문을 주셨군요. 스택 크기가 언제 결정되는지에 대한 혼란이 있을 수 있습니다. 이를 명확히 하기 위해 다음과 같이 설명드리겠습니다.

일반적으로 프로그래밍에서 스택의 크기는 개발자가 설정할 수 있으며, 이 설정은 컴파일러나 링커 옵션을 통해 조정됩니다. 보통 프로세스의 스택 크기는 링커 옵션을 통해 결정되며, 이 값은 생성되는 실행 파일(exe)이나 DLL의 PE(Portable Executable) 헤더에 포함됩니다. 따라서, 최종적으로 스택 크기는 링크 단계에서 결정됩니다.

  1. 컴파일 단계: 코드가 기계어로 번역되는 과정입니다. 이 단계에서는 스택 크기와 직접적인 관련은 없습니다.

  2. 링크 단계: 컴파일된 오브젝트 파일들이 결합되어 최종 실행 파일이 만들어지는 과정입니다. 이때 링커 옵션을 통해 스택 크기를 설정할 수 있으며, 이 설정은 실행 파일의 헤더에 저장됩니다.

따라서, 스택 크기가 결정되는 주된 지점은 바로 링크 단계입니다. 이는 PE 헤더에 포함되어 운영체제가 프로그램을 로드할 때 참조할 수 있게 합니다.

추가적으로, 실행 중인 스레드별로 스택 크기를 동적으로 다르게 조정할 수 있는 방법도 있지만, 기본 스택 크기의 설정은 위와 같은 과정을 거치게 된다는 점 참고해 주세요.

위 설명이 도움이 되셨기를 바라며, 관련된 링커 옵션 설정에 대한 질문도 확인해 보시면 더 자세한 내용을 얻으실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

LoDf님의 프로필 이미지
LoDf

작성한 질문수

질문하기